shill: Static IP: Save DHCP-supplied IP parameters

Before Static IP parameters are applied to an IPConfig, save
all DHCP-supplied parameters to corresponding "SavedIP.*"
values in the service.  This way the UI can display:

 * The current IP address confgured on the interface by
   showing the IPConfig value.
 * The current user-supplied static IP parameter by showing
   the "StaticIP.*" parameter.
 * The DHCP-supplied IP parameter by first checking for a
   "SavedIP.*" parameter, failing that, using the IPConfig
   parameter.

BUG=chromium-os:33223
TEST=New unit test + manual (set StaticIP.Address parameter,
reconnect, and confirm that both SavedIP.Address and StaticIP.Address
parameters are set on the service)

Change-Id: I6410b003bbdc63097a193cfb09881c862dcef5bd
Reviewed-on: https://gerrit.chromium.org/gerrit/29130
Commit-Ready: Paul Stewart <pstew@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/key_value_store.cc b/key_value_store.cc
index 8fb2139..c93651b 100644
--- a/key_value_store.cc
+++ b/key_value_store.cc
@@ -14,6 +14,13 @@
 
 KeyValueStore::KeyValueStore() {}
 
+void KeyValueStore::Clear() {
+  bool_properties_.clear();
+  int_properties_.clear();
+  string_properties_.clear();
+  uint_properties_.clear();
+}
+
 bool KeyValueStore::ContainsBool(const string &name) const {
   return ContainsKey(bool_properties_, name);
 }