Adding purgeOnDisconnect support to the meter subsystem and adding vlanId match
criteria to EAPOL trap flows.

* Adding purgeOnDisconnect property to MeterManager
* DeviceListener implementation on MeterManager
* Adding purgeMeter(DeviceId deviceId) method to MeterStore
* Calling the above method when DEVICE_AVAILABILITY_CHANGE is received
* Adding vlanId match criteria to EAPOL trap flows (OltPipeline change)

Change-Id: Ibb254302efe94edf1fd596f74a6eef6587410475
(cherry picked from commit 91b38543d822a0d9d092f9b3ff7760b1a206226a)
diff --git a/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java b/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
index 9b5eae8..3f0efa0 100644
--- a/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
@@ -102,13 +102,14 @@
      * Notifies the delegate that the meter failed to allow it
      * to nofity the app.
      *
-     * @param op a failed meter operation
+     * @param op     a failed meter operation
      * @param reason a failure reason
      */
     void failedMeter(MeterOperation op, MeterFailReason reason);
 
     /**
      * Delete this meter immediately.
+     *
      * @param m a meter
      */
     void deleteMeterNow(Meter m);
@@ -134,8 +135,15 @@
      * Frees the given meter id.
      *
      * @param deviceId the device id
-     * @param meterId the id to be freed
+     * @param meterId  the id to be freed
      */
     void freeMeterId(DeviceId deviceId, MeterId meterId);
 
+    /**
+     * Removes all meters of given device from store.
+     *
+     * @param deviceId the device id
+     */
+    void purgeMeter(DeviceId deviceId);
+
 }