CORD-389 Fix for Accton 6712 deployment

Related to this topic:
- Disable the meter collector since right now it is not supported
- Implement extension VLAN ID selector/treatment for OFDPA
    Since it requires two special flow entries to match untagged packets
        0x1ffe/no mask (filtering rule, need to go first)
        0x0000/0x1fff setvid 0x0ffe (assignment rule, need to go second)
- Not able to point /32 IP address to ECMP group. Use /31 instead.

In addition:
- Implement serializer for ExtensionCriterion

Change-Id: I621b3ad14014d7e6945c014cdae4f7cd2939288e
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/NewAdaptiveFlowStatsCollector.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/NewAdaptiveFlowStatsCollector.java
index e286684..c8539c5 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/NewAdaptiveFlowStatsCollector.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/NewAdaptiveFlowStatsCollector.java
@@ -20,6 +20,7 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
+import org.onosproject.net.driver.DriverService;
 import org.onosproject.net.flow.DefaultTypedFlowEntry;
 import org.onosproject.net.flow.FlowEntry;
 import org.onosproject.net.flow.FlowId;
@@ -55,9 +56,9 @@
  * Efficiently and adaptively collects flow statistics for the specified switch.
  */
 public class NewAdaptiveFlowStatsCollector {
-
     private final Logger log = getLogger(getClass());
 
+    private final DriverService driverService;
     private final OpenFlowSwitch sw;
 
     private ScheduledExecutorService adaptiveFlowStatsScheduler =
@@ -109,9 +110,10 @@
      * @param sw           switch to pull
      * @param pollInterval cal and immediate poll frequency in seconds
      */
-    NewAdaptiveFlowStatsCollector(OpenFlowSwitch sw, int pollInterval) {
+    NewAdaptiveFlowStatsCollector(
+            DriverService driverService, OpenFlowSwitch sw, int pollInterval) {
+        this.driverService = driverService;
         this.sw = sw;
-
         initMemberVars(pollInterval);
     }
 
@@ -232,7 +234,7 @@
     private void ofFlowStatsRequestFlowSend(FlowEntry fe) {
         // set find match
         Match match = FlowModBuilder.builder(fe, sw.factory(), Optional.empty(),
-                Optional.empty()).buildMatch();
+                Optional.of(driverService)).buildMatch();
         // set find tableId
         TableId tableId = TableId.of(fe.tableId());
         // set output port