shill: vpn: Support {Password|PSK}Required VPN provider properties.

This patch also switches the Provider property from a Stringmap to a
KeyValueStore because it needs to contain both string and boolean
properties.

BUG=chromium-os:27323
TEST=unit tests, tested on device with list-services and chrome://settings

Change-Id: I8f2f1411e3dabce5059753dd9ee09b64e65c0b9d
Reviewed-on: https://gerrit.chromium.org/gerrit/21184
Commit-Ready: Darin Petkov <petkov@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
diff --git a/openvpn_driver.h b/openvpn_driver.h
index b2b7ba5..d51d19d 100644
--- a/openvpn_driver.h
+++ b/openvpn_driver.h
@@ -132,6 +132,9 @@
   // Called when the openpvn process exits.
   static void OnOpenVPNDied(GPid pid, gint status, gpointer data);
 
+  // Inherit from VPNDriver to add custom properties.
+  virtual KeyValueStore GetProvider(Error *error);
+
   // Implements RPCTaskDelegate.
   virtual void GetLogin(std::string *user, std::string *password);
   virtual void Notify(const std::string &reason,