shill: Create DBusPropertiesProxy for Modem.

Since the ModemManagerClassic/ModemManager1 split happened, modems had
not been creating a DBusPropertiesProxy, so they have not been getting
PropertyChanged or MmPropertiesChanged signals. As a result, shill
hasn't been handling updates to network technology or SIM lock status.
This change adds creation of the proxy to the Modem intialization
path, and moves the inheritance from DBusPropertiesProxyDelegate
up to the base Modem class from ModemClassic.

BUG=chromium-os:29230
TEST=Disable and enable the modem. Use list-services and mm-status
to check whether shill's view of the network technology matches
ModemManager's AccessTechnology property. Also enable and disable
the SIM lock PIN, and make sure that the device SIMLockStatus
property gets updated properly.

Change-Id: I1f03935cb05e1ad0edf057b5bb64e993b9ccd977
Reviewed-on: https://gerrit.chromium.org/gerrit/19928
Reviewed-by: Jason Glasgow <jglasgow@chromium.org>
Commit-Ready: Eric Shienbrood <ers@chromium.org>
Tested-by: Eric Shienbrood <ers@chromium.org>
diff --git a/modem.cc b/modem.cc
index cd5db9c..899918a 100644
--- a/modem.cc
+++ b/modem.cc
@@ -50,6 +50,13 @@
   }
 }
 
+void Modem::Init() {
+  dbus_properties_proxy_.reset(
+      ProxyFactory::GetInstance()->CreateDBusPropertiesProxy(this,
+                                                             path(),
+                                                             owner()));
+}
+
 void Modem::OnDeviceInfoAvailable(const string &link_name) {
   VLOG(2) << __func__;
   if (pending_device_info_ && link_name_ == link_name) {
@@ -132,4 +139,20 @@
 
   manager_->device_info()->RegisterDevice(device_);
 }
+
+void Modem::OnDBusPropertiesChanged(
+    const string &/*interface*/,
+    const DBusPropertiesMap &/*changed_properties*/,
+    const vector<string> &/*invalidated_properties*/) {
+  // Ignored.
+}
+
+void Modem::OnModemManagerPropertiesChanged(
+    const string &/*interface*/,
+    const DBusPropertiesMap &properties) {
+  if (device().get()) {
+    device()->OnModemManagerPropertiesChanged(properties);
+  }
+}
+
 }  // namespace shill