shill: vpn: Destroy Unload()ed VPN services

BUG=chromium-os:28481
TEST=New unit test.

Change-Id: I222441d3ff5cbc7d97d97f7fdd2917eee5921721
Reviewed-on: https://gerrit.chromium.org/gerrit/19143
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Commit-Ready: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/vpn_provider.h b/vpn_provider.h
index f4b532c..c968b1e 100644
--- a/vpn_provider.h
+++ b/vpn_provider.h
@@ -39,8 +39,14 @@
   // device has been accepted by a service.
   bool OnDeviceInfoAvailable(const std::string &link_name, int interface_index);
 
+  // Clean up a VPN services that has been unloaded and will be deregistered.
+  // This removes the VPN provider's reference to this service in its
+  // services_ vector.
+  void RemoveService(VPNServiceRefPtr service);
+
  private:
   FRIEND_TEST(VPNProviderTest, OnDeviceInfoAvailable);
+  FRIEND_TEST(VPNProviderTest, RemoveService);
 
   ControlInterface *control_interface_;
   EventDispatcher *dispatcher_;