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/resolver.h b/resolver.h
index bbf188f..34b43a7 100644
--- a/resolver.h
+++ b/resolver.h
@@ -6,8 +6,8 @@
 #define SHILL_RESOLVER_
 
 #include <base/file_path.h>
+#include <base/lazy_instance.h>
 #include <base/memory/ref_counted.h>
-#include <base/memory/singleton.h>
 
 #include "shill/refptr_types.h"
 
@@ -17,6 +17,8 @@
 // of an ipconfig into a "resolv.conf" formatted file.
 class Resolver {
  public:
+  virtual ~Resolver();
+
   // Since this is a singleton, use Resolver::GetInstance()->Foo()
   static Resolver *GetInstance();
 
@@ -28,13 +30,12 @@
   // Remove any created domain name service file
   bool ClearDNS();
 
- private:
-  friend struct DefaultSingletonTraits<Resolver>;
-  friend class ResolverTest;
-
-  // Don't allow this object to be created
+ protected:
   Resolver();
-  ~Resolver();
+
+ private:
+  friend struct base::DefaultLazyInstanceTraits<Resolver>;
+  friend class ResolverTest;
 
   FilePath path_;