shill: On Service::Connect, connect the modem device to the network.

Also, uncouple the DBusProperties signal callbacks from Modem to make the proxy
implementation more consistent with the other proxies.

BUG=chromium-os:18727
TEST=unit tests

Change-Id: Icdddea8d2a30803150f2a159fdc5a719e960f95d
Reviewed-on: http://gerrit.chromium.org/gerrit/5444
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Chris Masone <cmasone@chromium.org>
diff --git a/proxy_factory.h b/proxy_factory.h
index 0fc1cbd..777051a 100644
--- a/proxy_factory.h
+++ b/proxy_factory.h
@@ -16,13 +16,14 @@
 namespace shill {
 
 class DBusPropertiesProxyInterface;
+class DBusPropertiesProxyListener;
 class DHCPProxyInterface;
-class Modem;
 class ModemCDMAProxyInterface;
 class ModemCDMAProxyListener;
 class ModemManager;
 class ModemManagerProxyInterface;
 class ModemProxyInterface;
+class ModemProxyListener;
 class ModemSimpleProxyInterface;
 class SupplicantInterfaceProxyInterface;
 class SupplicantProcessProxyInterface;
@@ -36,7 +37,7 @@
   void Init();
 
   virtual DBusPropertiesProxyInterface *CreateDBusPropertiesProxy(
-      Modem *modem,
+      DBusPropertiesProxyListener *listener,
       const std::string &path,
       const std::string &service);
 
@@ -45,7 +46,8 @@
       const std::string &path,
       const std::string &service);
 
-  virtual ModemProxyInterface *CreateModemProxy(const std::string &path,
+  virtual ModemProxyInterface *CreateModemProxy(ModemProxyListener *listener,
+                                                const std::string &path,
                                                 const std::string &service);
 
   virtual ModemSimpleProxyInterface *CreateModemSimpleProxy(