[VOL-4055][ONOS-8138] Adding annotations to meter to allow passing of associated information

This patch allows for adding key value elements in the meter request and in the meter generated from it.
An example is:
Annotations annotations = DefaultAnnotations.builder().set("MeterForDeviceType", "olt").build();
DefaultMeterRequest.builder().withAnnotations(annotations)
Generates:
 DefaultMeter{device=of:00000a0a0a0a0a0b, cellId=2, appId=org.opencord.olt, unit=KB_PER_SEC, isBurst=true, state=ADDED, bands=[DefaultBand{rate=100000, burst-size=5000, type=DROP, drop-precedence=null}, DefaultBand{rate=100000, burst-size=5000, type=DROP, drop-precedence=null}, DefaultBand{rate=100000, burst-size=0, type=DROP, drop-precedence=null}], annotations={MeterForDeviceType=olt}}

Change-Id: Ifaded96ebeb7956bc60cdf311180c984c3ba954e
diff --git a/core/api/src/main/java/org/onosproject/net/meter/MeterRequest.java b/core/api/src/main/java/org/onosproject/net/meter/MeterRequest.java
index 9060b95..a2be1ce 100644
--- a/core/api/src/main/java/org/onosproject/net/meter/MeterRequest.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterRequest.java
@@ -16,6 +16,8 @@
 package org.onosproject.net.meter;
 
 import org.onosproject.core.ApplicationId;
+import org.onosproject.net.Annotated;
+import org.onosproject.net.Annotations;
 import org.onosproject.net.DeviceId;
 
 import java.util.Collection;
@@ -24,7 +26,7 @@
 /**
  * Represents a generalized meter request to be deployed on a device.
  */
-public interface MeterRequest {
+public interface MeterRequest extends Annotated {
 
     enum Type {
         ADD,
@@ -129,6 +131,14 @@
         Builder withContext(MeterContext context);
 
         /**
+         * Sets the annotations.
+         *
+         * @param annotations annotations
+         * @return builder object
+         */
+        Builder withAnnotations(Annotations annotations);
+
+        /**
          * Requests the addition of a meter.
          *
          * @return a meter request