shill: allow property accessors to return an error message if a
property's value cannot be changed.

also, reduce some code duplication in property_store.cc

BUG=chromium-os:21384
TEST=unittests

Change-Id: Iaac8d40bbb9e9a1341d6c6d01642885d88ac0e27
Reviewed-on: http://gerrit.chromium.org/gerrit/8925
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Tested-by: mukesh agrawal <quiche@chromium.org>
diff --git a/manager.h b/manager.h
index ede4f49..289ee09 100644
--- a/manager.h
+++ b/manager.h
@@ -102,12 +102,14 @@
   std::vector<std::string> EnumerateWatchedServices();
   std::string GetActiveProfileName();
 
-  void HelpRegisterDerivedString(const std::string &name,
-                                 std::string(Manager::*get)(void),
-                                 bool(Manager::*set)(const std::string&));
-  void HelpRegisterDerivedStrings(const std::string &name,
-                                  Strings(Manager::*get)(void),
-                                  bool(Manager::*set)(const Strings&));
+  void HelpRegisterDerivedString(
+      const std::string &name,
+      std::string(Manager::*get)(void),
+      void(Manager::*set)(const std::string&, Error *));
+  void HelpRegisterDerivedStrings(
+      const std::string &name,
+      Strings(Manager::*get)(void),
+      void(Manager::*set)(const Strings&, Error *));
 
   bool OrderServices(ServiceRefPtr a, ServiceRefPtr b);
   void SortServices();