shill: Implement Service::Configure

This applies the properties of a KeyValueStore to a Service.  It
does so by calling accessors in the Service's PropertyStore with
each value in the KeyValueStore.  Certain parameters are ommitted
at the request of the Service if they were ostensibly already handled
in the GetService or ConfigureService call that started this Confiugre.

BUG=chromium-os:22800
TEST=New unit tests.

Change-Id: I69eedcdee03fa0682ff7821553bb6c7d76e6a50e
Reviewed-on: https://gerrit.chromium.org/gerrit/18823
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
Commit-Ready: Paul Stewart <pstew@chromium.org>
diff --git a/wifi_service.cc b/wifi_service.cc
index 7596206..2faa452 100644
--- a/wifi_service.cc
+++ b/wifi_service.cc
@@ -109,6 +109,12 @@
   // Until we know better (at Profile load time), use the generic name.
   storage_identifier_ = GetGenericStorageIdentifier();
   UpdateConnectable();
+
+  IgnoreParameterForConfigure(flimflam::kModeProperty);
+  IgnoreParameterForConfigure(flimflam::kSSIDProperty);
+  IgnoreParameterForConfigure(flimflam::kSecurityProperty);
+  IgnoreParameterForConfigure(flimflam::kPassphraseProperty);
+  IgnoreParameterForConfigure(flimflam::kWifiHiddenSsid);
 }
 
 WiFiService::~WiFiService() {