Basic DHCP framework and DHCPCD proxies.

DHCPProvider singleton will instantiate and supply DHCPConfig objects. Each
DHCPConfig object corresponds to a separate DHCP client (dhcpcd). Each
DHCPConfig object will be associated with a single DHCPCDProxy object to
communicate with that client. DHCPProvider will use a DHCPCDListener singleton
to figure the D-Bus destination of each spawned DHCP client dispatch signals to
its DHCPCDProxy.

Also fix dhcpcd.xml (this needs to be fixed in dhcpcd itself, really).

BUG=chromium-os:16013
TEST=manual by modifying shill_main and instantiating the proxies.

Change-Id: I8fb0eadb8c751365997db2ed2bdfde0711c362a3
Reviewed-on: http://gerrit.chromium.org/gerrit/1934
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
diff --git a/dbus_control.h b/dbus_control.h
index 0e9c9ad..4ec148e 100644
--- a/dbus_control.h
+++ b/dbus_control.h
@@ -22,8 +22,10 @@
   ServiceAdaptorInterface *CreateServiceAdaptor(Service *service);
   DeviceAdaptorInterface *CreateDeviceAdaptor(Device *device);
 
- private:
   void EnsureConnection();
+  DBus::Connection *connection() { return connection_.get(); }
+
+ private:
   scoped_ptr<DBus::Glib::BusDispatcher> dispatcher_;
   scoped_ptr<DBus::Connection> connection_;
 };