shill: Add connection class

The connection class represents the snapshot of connectivity
state, including routing, address information and addressing.
It is able to apply itself as the "default" connection, by
setting routing table metrics and DNS resolver files.

BUG=chromium-os:19095
TEST=New unittest

Change-Id: I7021867ed8a8559db0e84f58a72692abaf105cad
Reviewed-on: http://gerrit.chromium.org/gerrit/5938
Reviewed-by: Chris Masone <cmasone@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/resolver.h b/resolver.h
index 34b43a7..70f344e 100644
--- a/resolver.h
+++ b/resolver.h
@@ -22,13 +22,17 @@
   // Since this is a singleton, use Resolver::GetInstance()->Foo()
   static Resolver *GetInstance();
 
-  void set_path(const FilePath &path) { path_ = path; }
+  virtual void set_path(const FilePath &path) { path_ = path; }
 
-  // Set the default domain name mservice parameters, given an ipconfig entry
-  bool SetDNS(const IPConfigRefPtr &ipconfig);
+  // Set the default domain name service parameters, given an ipconfig entry
+  virtual bool SetDNSFromIPConfig(const IPConfigRefPtr &ipconfig);
+
+  // Set the default domain name service parameters, given an ipconfig entry
+  virtual bool SetDNSFromLists(const std::vector<std::string> &dns_servers,
+                               const std::vector<std::string> &domain_search);
 
   // Remove any created domain name service file
-  bool ClearDNS();
+  virtual bool ClearDNS();
 
  protected:
   Resolver();