[ONOS-3618] Implement REST API for Meter query, insert, delete

* Implement encode & decode method for MeterBandCodec & MeterCodec
* Implement MetersWebResource
* Add unit test for MeterBandCodec & MeterCodec
* Add unit test for MetersWebResource
* Add meter insertion json example
* Add Swagger doc

Change-Id: I07284c6678c08b3cb9e109e86ffb2cf28bf36447
diff --git a/web/api/src/main/resources/definitions/Meter.json b/web/api/src/main/resources/definitions/Meter.json
new file mode 100644
index 0000000..e8fefe5
--- /dev/null
+++ b/web/api/src/main/resources/definitions/Meter.json
@@ -0,0 +1,113 @@
+{
+  "type": "object",
+  "title": "meter",
+  "required": [
+    "id",
+    "appId",
+    "deviceId",
+    "unit",
+    "burst",
+    "state",
+    "life",
+    "refCount",
+    "packets",
+    "bytes",
+    "bands"
+  ],
+  "properties": {
+    "id": {
+      "type": "string",
+      "example": "1"
+    },
+    "appId": {
+      "type": "string",
+      "example": "1"
+    },
+    "deviceId": {
+      "type": "string",
+      "example": "of:0000000000000001"
+    },
+    "unit": {
+      "type": "string",
+      "example": "KB_PER_SEC"
+    },
+    "burst": {
+      "type": "boolean",
+      "example": true
+    },
+    "state": {
+      "type": "string",
+      "example": "ADDED"
+    },
+    "life": {
+      "type": "integer",
+      "format": "int64",
+      "example": 0
+    },
+    "refCount": {
+      "type": "integer",
+      "format": "int64",
+      "example": 0
+    },
+    "packets": {
+      "type": "integer",
+      "format": "int64",
+      "example": 0
+    },
+    "bytes": {
+      "type": "integer",
+      "format": "int64",
+      "example": 0
+    },
+    "bands": {
+      "type": "array",
+      "xml": {
+        "name": "bands",
+        "wrapped": true
+      },
+      "items": {
+        "type": "object",
+        "title": "bands",
+        "required": [
+          "type",
+          "rate",
+          "burstSize",
+          "prec",
+          "packets",
+          "bytes"
+        ],
+        "properties": {
+          "type": {
+            "type": "string",
+            "example": "REMARK"
+          },
+          "rate": {
+            "type": "integer",
+            "format": "int64",
+            "example": 0
+          },
+          "burstSize": {
+            "type": "integer",
+            "format": "int64",
+            "example": 0
+          },
+          "prec": {
+            "type": "integer",
+            "format": "int16",
+            "example": 0
+          },
+          "packets": {
+            "type": "integer",
+            "format": "int64",
+            "example": 0
+          },
+          "bytes": {
+            "type": "integer",
+            "format": "int64",
+            "example": 0
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file