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/manager.h b/manager.h
index 6f77c63..a8b2c4a 100644
--- a/manager.h
+++ b/manager.h
@@ -27,8 +27,9 @@
 class ControlInterface;
 class Error;
 class EventDispatcher;
-class ManagerAdaptorInterface;
 class GLib;
+class ManagerAdaptorInterface;
+class Metrics;
 
 class Manager {
  public:
@@ -43,6 +44,7 @@
 
   Manager(ControlInterface *control_interface,
           EventDispatcher *dispatcher,
+          Metrics *metrics,
           GLib *glib,
           const std::string &run_directory,
           const std::string &storage_directory,
@@ -169,6 +171,7 @@
   std::vector<ProfileRefPtr> profiles_;
   ProfileRefPtr ephemeral_profile_;
   ControlInterface *control_interface_;
+  Metrics *metrics_;
   GLib *glib_;
 
   // The priority order of technologies