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/cellular.cc b/cellular.cc
index 85097a5..c3ab9b1 100644
--- a/cellular.cc
+++ b/cellular.cc
@@ -712,7 +712,7 @@
   }
 }
 
-StrIntPair Cellular::SimLockStatusToProperty() {
+StrIntPair Cellular::SimLockStatusToProperty(Error */*error*/) {
   return StrIntPair(make_pair(flimflam::kSIMLockTypeProperty,
                               sim_lock_status_.lock_type),
                     make_pair(flimflam::kSIMLockRetriesLeftProperty,
@@ -721,7 +721,7 @@
 
 void Cellular::HelpRegisterDerivedStrIntPair(
     const string &name,
-    StrIntPair(Cellular::*get)(void),
+    StrIntPair(Cellular::*get)(Error *),
     void(Cellular::*set)(const StrIntPair&, Error *)) {
   mutable_store()->RegisterDerivedStrIntPair(
       name,