shill: vpn: Associate VPN device with service and update IP configuration.

BUG=chromium-os:27384,chromium-os:27385
TEST=unit tests

Change-Id: I5b35bebeadd25f50f7044d2e4ec5bc121a56835e
Reviewed-on: https://gerrit.chromium.org/gerrit/17488
Commit-Ready: Darin Petkov <petkov@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
diff --git a/vpn_service.cc b/vpn_service.cc
index 1a1db2e..44a4769 100644
--- a/vpn_service.cc
+++ b/vpn_service.cc
@@ -13,20 +13,18 @@
 
 namespace shill {
 
-VPNService::VPNService(ControlInterface *control_interface,
+VPNService::VPNService(ControlInterface *control,
                        EventDispatcher *dispatcher,
                        Metrics *metrics,
                        Manager *manager,
                        VPNDriver *driver)
-    : Service(control_interface, dispatcher, metrics, manager,
-              Technology::kVPN),
+    : Service(control, dispatcher, metrics, manager, Technology::kVPN),
       driver_(driver) {}
 
 VPNService::~VPNService() {}
 
 void VPNService::Connect(Error *error) {
-  NOTIMPLEMENTED();
-  error->Populate(Error::kNotSupported);
+  driver_->Connect(this, error);
 }
 
 string VPNService::GetStorageIdentifier() const {