shill: Implement write-only properties

Certain properties (e.g. WIFI Passphrase) are write only and must
not be returned when Service.GetProperties() is called over D-Bus.

This CL implements WriteOnlyProperties, a write-only analog of the
read-only ConstProperties.

Also add a ReadablePropertyConstIterator which only returns the
readable properties. Switch over DBus adaptor and PropertyStore
to use that.

BUG=chromium-os:21196
TEST=Added 2 new unittests.

Change-Id: I52815cc395650e0b49e1acac8d4954deeebcee5d
Reviewed-on: https://gerrit.chromium.org/gerrit/11402
Commit-Ready: Gaurav Shah <gauravsh@chromium.org>
Reviewed-by: Gaurav Shah <gauravsh@chromium.org>
Tested-by: Gaurav Shah <gauravsh@chromium.org>
diff --git a/device.h b/device.h
index f61f1ef..4f3d3c0 100644
--- a/device.h
+++ b/device.h
@@ -133,7 +133,7 @@
   void SetServiceFailure(Service::ConnectFailure failure_state);
 
   void HelpRegisterDerivedStrings(const std::string &name,
-                                  Strings(Device::*get)(void),
+                                  Strings(Device::*get)(Error *),
                                   void(Device::*set)(const Strings&, Error *));
 
   // Property getters reserved for subclasses
@@ -158,7 +158,7 @@
   // |suffix| is injected into the storage identifier used for the configs.
   std::string SerializeIPConfigs(const std::string &suffix);
 
-  std::vector<std::string> AvailableIPConfigs();
+  std::vector<std::string> AvailableIPConfigs(Error *error);
   std::string GetRpcConnectionIdentifier();
 
   // Properties