Move away from Singleton

Move from Singleton to LazyInstance for one-of classes in Shill.
This will allow them to be subclassed (mocked).

BUG=chromium-os:18986
TEST=Re-run unit tests

Change-Id: I83320694db5df1a263332315ad4f6955b107280b
Reviewed-on: http://gerrit.chromium.org/gerrit/5676
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/dhcp_provider.cc b/dhcp_provider.cc
index b79a2b2..e632328 100644
--- a/dhcp_provider.cc
+++ b/dhcp_provider.cc
@@ -15,6 +15,9 @@
 
 namespace shill {
 
+static base::LazyInstance<DHCPProvider> g_dhcp_provider(
+    base::LINKER_INITIALIZED);
+
 DHCPProvider::DHCPProvider()
     : control_interface_(NULL),
       dispatcher_(NULL),
@@ -27,7 +30,7 @@
 }
 
 DHCPProvider* DHCPProvider::GetInstance() {
-  return Singleton<DHCPProvider>::get();
+  return g_dhcp_provider.Pointer();
 }
 
 void DHCPProvider::Init(ControlInterface *control_interface,