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/device_unittest.cc b/device_unittest.cc
index 0a10427..46f2ed8 100644
--- a/device_unittest.cc
+++ b/device_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -51,6 +51,7 @@
       : device_(new Device(control_interface(),
                            NULL,
                            NULL,
+                           NULL,
                            kDeviceName,
                            kDeviceAddress,
                            0,
@@ -194,6 +195,7 @@
   scoped_refptr<MockService> service(
       new StrictMock<MockService>(control_interface(),
                                   dispatcher(),
+                                  metrics(),
                                   manager()));
   device_->SelectService(service);
   EXPECT_TRUE(device_->selected_service_.get() == service.get());
@@ -222,6 +224,7 @@
   scoped_refptr<MockService> service(
       new StrictMock<MockService>(control_interface(),
                                   dispatcher(),
+                                  metrics(),
                                   manager()));
   device_->SelectService(service);
   EXPECT_CALL(*service.get(), SetState(Service::kStateDisconnected));
@@ -233,6 +236,7 @@
   scoped_refptr<MockService> service(
       new StrictMock<MockService>(control_interface(),
                                   dispatcher(),
+                                  metrics(),
                                   manager()));
   device_->SelectService(service);
   device_->manager_ = manager();
@@ -248,6 +252,7 @@
   scoped_refptr<MockService> service(
       new NiceMock<MockService>(&control_interface_,
                                 dispatcher(),
+                                metrics(),
                                 manager()));
   device_->SelectService(service);