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/wifi_service_unittest.cc b/wifi_service_unittest.cc
index 99bb635..3631f2d 100644
--- a/wifi_service_unittest.cc
+++ b/wifi_service_unittest.cc
@@ -44,6 +44,7 @@
       new NiceMock<MockWiFi>(
           control_interface(),
           dispatcher(),
+          metrics(),
           manager(),
           "wifi",
           fake_mac,
@@ -57,6 +58,7 @@
     vector<uint8_t> ssid(1, 'a');
     WiFiServiceRefPtr service = new WiFiService(control_interface(),
                                                 dispatcher(),
+                                                metrics(),
                                                 manager(),
                                                 wifi(),
                                                 ssid,
@@ -87,6 +89,7 @@
 
     return new WiFiService(control_interface(),
                            dispatcher(),
+                           metrics(),
                            manager(),
                            wifi(),
                            ssid,
@@ -152,6 +155,7 @@
 
   WiFiServiceRefPtr wifi_service = new WiFiService(control_interface(),
                                                    dispatcher(),
+                                                   metrics(),
                                                    manager(),
                                                    wifi(),
                                                    ssid,
@@ -176,6 +180,7 @@
   vector<uint8_t> ssid(5);
   WiFiServiceRefPtr wifi_service = new WiFiService(control_interface(),
                                                    dispatcher(),
+                                                   metrics(),
                                                    manager(),
                                                    wifi(),
                                                    ssid,
@@ -197,6 +202,7 @@
   vector<uint8_t> ssid(5);
   WiFiServiceRefPtr wifi_service = new WiFiService(control_interface(),
                                                    dispatcher(),
+                                                   metrics(),
                                                    manager(),
                                                    wifi(),
                                                    ssid,
@@ -215,6 +221,7 @@
   vector<uint8_t> ssid(5);
   WiFiServiceRefPtr wifi_service = new WiFiService(control_interface(),
                                                    dispatcher(),
+                                                   metrics(),
                                                    manager(),
                                                    wifi(),
                                                    ssid,
@@ -233,6 +240,7 @@
   ssid.push_back(0xff);  // not a valid UTF-8 byte-sequence
   WiFiServiceRefPtr wifi_service = new WiFiService(control_interface(),
                                                    dispatcher(),
+                                                   metrics(),
                                                    manager(),
                                                    wifi(),
                                                    ssid,
@@ -253,6 +261,7 @@
   vector<uint8_t> ssid(5);
   WiFiServiceRefPtr wifi_service = new WiFiService(control_interface(),
                                                    dispatcher(),
+                                                   metrics(),
                                                    manager(),
                                                    wifi(),
                                                    ssid,
@@ -268,6 +277,7 @@
   vector<uint8_t> ssid(5);
   WiFiServiceRefPtr wifi_service = new WiFiService(control_interface(),
                                                    dispatcher(),
+                                                   metrics(),
                                                    manager(),
                                                    wifi(),
                                                    ssid,
@@ -283,6 +293,7 @@
   vector<uint8_t> ssid(5);
   WiFiServiceRefPtr wifi_service = new WiFiService(control_interface(),
                                                    dispatcher(),
+                                                   metrics(),
                                                    manager(),
                                                    wifi(),
                                                    ssid,
@@ -330,6 +341,7 @@
   vector<uint8_t> ssid(5);
   WiFiServiceRefPtr wifi_service = new WiFiService(control_interface(),
                                                    dispatcher(),
+                                                   metrics(),
                                                    manager(),
                                                    wifi(),
                                                    ssid,
@@ -369,6 +381,7 @@
 
   WiFiServiceRefPtr service = new WiFiService(control_interface(),
                                               dispatcher(),
+                                              metrics(),
                                               manager(),
                                               wifi(),
                                               ssid,
@@ -438,6 +451,7 @@
 
   WiFiServiceRefPtr service = new WiFiService(control_interface(),
                                               dispatcher(),
+                                              metrics(),
                                               manager(),
                                               wifi(),
                                               ssid,
@@ -476,6 +490,7 @@
 
   WiFiServiceRefPtr service = new WiFiService(control_interface(),
                                               dispatcher(),
+                                              metrics(),
                                               manager(),
                                               wifi(),
                                               ssid,
@@ -522,6 +537,7 @@
   vector<uint8_t> ssid(1, 'a');
   WiFiServiceRefPtr service = new WiFiService(control_interface(),
                                               dispatcher(),
+                                              metrics(),
                                               manager(),
                                               wifi(),
                                               ssid,
@@ -553,6 +569,7 @@
   vector<uint8_t> ssid(1, 'a');
   WiFiServiceRefPtr service = new WiFiService(control_interface(),
                                               dispatcher(),
+                                              metrics(),
                                               manager(),
                                               wifi(),
                                               ssid,