shill: Move Metrics from singleton to Shill daemon

While implementing chromium-os:24810, it was discovered that Metrics is
cleaner if it is passed around like ControlInterface, Dispatcher,
Manager, etc.  This approach also makes Metrics more testable.

BUG=chromium-os:24810
TEST=Unit tests, network_WiFiManager suite

Change-Id: I556a1bd11f21f0b93ecfeaae8855dfb99ed5e5f9
Reviewed-on: https://gerrit.chromium.org/gerrit/14099
Commit-Ready: Thieu Le <thieule@chromium.org>
Reviewed-by: Thieu Le <thieule@chromium.org>
Tested-by: Thieu Le <thieule@chromium.org>
diff --git a/modem.h b/modem.h
index 654b649..158b89a 100644
--- a/modem.h
+++ b/modem.h
@@ -23,6 +23,7 @@
 class ControlInterface;
 class EventDispatcher;
 class Manager;
+class Metrics;
 class ProxyFactory;
 
 // Handles an instance of ModemManager.Modem and an instance of a Cellular
@@ -36,6 +37,7 @@
         const std::string &path,
         ControlInterface *control_interface,
         EventDispatcher *dispatcher,
+        Metrics *metrics,
         Manager *manager,
         mobile_provider_db *provider_db);
   ~Modem();
@@ -91,6 +93,7 @@
   ScopedRunnableMethodFactory<Modem> task_factory_;
   ControlInterface *control_interface_;
   EventDispatcher *dispatcher_;
+  Metrics *metrics_;
   Manager *manager_;
   mobile_provider_db *provider_db_;
   std::string link_name_;