Added a framework for metrics

Added a metrics framework based on the codahale Metrics
package.  ONOS can create a registry and maintain Metrics,
as well as dump out metrics values via a REST API.  Unit
tests are include that test the REST APIs.  Currently
supports Timers, Counters, Gauges, Meters, and Histograms.

Change-Id: I0f6ed87f889dc7037caf9aefc92e663702c6dda8
diff --git a/src/main/java/net/onrc/onos/core/metrics/OnosMetricsModule.java b/src/main/java/net/onrc/onos/core/metrics/OnosMetricsModule.java
new file mode 100644
index 0000000..6f046cf
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/metrics/OnosMetricsModule.java
@@ -0,0 +1,53 @@
+package net.onrc.onos.core.metrics;
+
+import net.floodlightcontroller.core.module.FloodlightModuleContext;
+import net.floodlightcontroller.core.module.FloodlightModuleException;
+import net.floodlightcontroller.core.module.IFloodlightModule;
+import net.floodlightcontroller.core.module.IFloodlightService;
+import net.floodlightcontroller.restserver.IRestApiService;
+import net.onrc.onos.core.registry.IControllerRegistryService;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Floodlight module to add the REST APIs for Metrics.
+ */
+public class OnosMetricsModule implements IFloodlightModule {
+
+    private IRestApiService restApi;
+
+    @Override
+    public Collection<Class<? extends IFloodlightService>> getModuleServices() {
+        return null;
+    }
+
+    @Override
+    public Map<Class<? extends IFloodlightService>, IFloodlightService>
+           getServiceImpls() {
+        return null;
+    }
+
+    @Override
+    public Collection<Class<? extends IFloodlightService>> getModuleDependencies() {
+        List<Class<? extends IFloodlightService>> dependencies =
+                new ArrayList<>();
+        dependencies.add(IControllerRegistryService.class);
+        dependencies.add(IRestApiService.class);
+        return dependencies;
+    }
+
+    @Override
+    public void init(FloodlightModuleContext context)
+            throws FloodlightModuleException {
+        restApi = context.getServiceImpl(IRestApiService.class);
+    }
+
+    @Override
+    public void startUp(FloodlightModuleContext context) {
+        restApi.addRestletRoutable(new MetricsWebRoutable());
+    }
+}
+