shill: Convert DHCP Proxy to use a model similar to Supplicant and ModemManager.

Also, don't create a DBus connection for each proxy since this doesn't work in
some event callbacks and wastes resources. Instead use a shared connection
provided by the ProxyFactory.

BUG=chromium-os:17735
TEST=unit tests, tested on device

Change-Id: I4d16b430783c1159501c0414ef3b846bce1a4c0e
Reviewed-on: http://gerrit.chromium.org/gerrit/4279
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: mukesh agrawal <quiche@chromium.org>
diff --git a/modem_manager_proxy.h b/modem_manager_proxy.h
index b782267..ff201ad 100644
--- a/modem_manager_proxy.h
+++ b/modem_manager_proxy.h
@@ -18,7 +18,8 @@
 // and owner name |service|.
 class ModemManagerProxy : public ModemManagerProxyInterface {
  public:
-  ModemManagerProxy(ModemManager *manager,
+  ModemManagerProxy(DBus::Connection *connection,
+                    ModemManager *manager,
                     const std::string &path,
                     const std::string &service);
   virtual ~ModemManagerProxy();
@@ -30,8 +31,8 @@
   class Proxy : public org::freedesktop::ModemManager_proxy,
                 public DBus::ObjectProxy {
    public:
-    Proxy(ModemManager *manager,
-          DBus::Connection *connection,
+    Proxy(DBus::Connection *connection,
+          ModemManager *manager,
           const std::string &path,
           const std::string &service);
     virtual ~Proxy();
@@ -47,7 +48,6 @@
     DISALLOW_COPY_AND_ASSIGN(Proxy);
   };
 
-  DBus::Connection connection_;
   Proxy proxy_;
 
   DISALLOW_COPY_AND_ASSIGN(ModemManagerProxy);