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_manager.cc b/modem_manager.cc
index f76c410..74bed03 100644
--- a/modem_manager.cc
+++ b/modem_manager.cc
@@ -21,6 +21,7 @@
                            const string &path,
                            ControlInterface *control_interface,
                            EventDispatcher *dispatcher,
+                           Metrics *metrics,
                            Manager *manager,
                            GLib *glib,
                            mobile_provider_db *provider_db)
@@ -30,6 +31,7 @@
       watcher_id_(0),
       control_interface_(control_interface),
       dispatcher_(dispatcher),
+      metrics_(metrics),
       manager_(manager),
       glib_(glib),
       provider_db_(provider_db) {}
@@ -106,6 +108,7 @@
                                     path,
                                     control_interface_,
                                     dispatcher_,
+                                    metrics_,
                                     manager_,
                                     provider_db_));
   modems_[path] = modem;