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/cellular.cc b/cellular.cc
index 1c34eac..1698292 100644
--- a/cellular.cc
+++ b/cellular.cc
@@ -84,6 +84,7 @@
 
 Cellular::Cellular(ControlInterface *control_interface,
                    EventDispatcher *dispatcher,
+                   Metrics *metrics,
                    Manager *manager,
                    const string &link_name,
                    const string &address,
@@ -94,6 +95,7 @@
                    mobile_provider_db *provider_db)
     : Device(control_interface,
              dispatcher,
+             metrics,
              manager,
              link_name,
              address,
@@ -320,7 +322,8 @@
   VLOG(2) << __func__;
   CHECK(!service_.get());
   service_ =
-      new CellularService(control_interface(), dispatcher(), manager(), this);
+      new CellularService(control_interface(), dispatcher(), metrics(),
+                          manager(), this);
   capability_->OnServiceCreated();
 }