shill: dbus_properties: Convert to callbacks instead of delegates

Use callbacks instead of proxies on the DBusPropertiesProxyInterface.
This makes the class consistent with the other proxies used for
cellular support, and in subsequent CLs will allow access to the
GetAll function without having to implement the Delegate interface.

Add a GetStrings method to dbus_properties.

BUG=none
TEST=run unit tests, run on a machine validate that changes in signal
strength are noticed.

Change-Id: I23e47f011c39a23f406ef62a52a5a613e55c55ed
Reviewed-on: https://gerrit.chromium.org/gerrit/20640
Reviewed-by: Jason Glasgow <jglasgow@chromium.org>
Tested-by: Jason Glasgow <jglasgow@chromium.org>
Commit-Ready: Jason Glasgow <jglasgow@chromium.org>
diff --git a/modem.cc b/modem.cc
index f1b8c77..b30f315 100644
--- a/modem.cc
+++ b/modem.cc
@@ -14,6 +14,7 @@
 #include "shill/scope_logger.h"
 
 using base::Bind;
+using base::Unretained;
 using std::string;
 using std::vector;
 
@@ -53,7 +54,11 @@
 
 void Modem::Init() {
   dbus_properties_proxy_.reset(
-      proxy_factory_->CreateDBusPropertiesProxy(this, path(), owner()));
+      proxy_factory_->CreateDBusPropertiesProxy(path(), owner()));
+  dbus_properties_proxy_->set_modem_manager_properties_changed_callback(
+      Bind(&Modem::OnModemManagerPropertiesChanged, Unretained(this)));
+  dbus_properties_proxy_->set_properties_changed_callback(
+      Bind(&Modem::OnDBusPropertiesChanged, Unretained(this)));
 }
 
 void Modem::OnDeviceInfoAvailable(const string &link_name) {