shill: Service: Implement "SetProperties" DBus call

Configure multiple Service properties at once in a single call.
This method differs from Manager::ConfigureService in two important
ways: Firstly, since this is a service method, the service is
found via its RPC identifier as opposed to its GUID or other
properties.  Secondly, only the service properties are set -- it
is not assigned a profile like ConfigureService -- in fact the
"Profile" property is silently ignored if provided to this call.

BUG=None
TEST=Unit tests

Change-Id: Ied4b75184bc4c27d88652dc14d14ef3f49b1574e
Reviewed-on: https://gerrit.chromium.org/gerrit/60775
Reviewed-by: Steven Bennetts <stevenjb@chromium.org>
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
Commit-Queue: Paul Stewart <pstew@chromium.org>
diff --git a/manager.h b/manager.h
index f1afc96..0d86f7f 100644
--- a/manager.h
+++ b/manager.h
@@ -96,9 +96,9 @@
   ProfileRefPtr LookupProfileByRpcIdentifier(const std::string &profile_rpcid);
 
   // Called via RPC call on Service (|to_set|) to set the "Profile" property.
-  void SetProfileForService(const ServiceRefPtr &to_set,
-                            const std::string &profile,
-                            Error *error);
+  virtual void SetProfileForService(const ServiceRefPtr &to_set,
+                                    const std::string &profile,
+                                    Error *error);
 
   virtual void RegisterDevice(const DeviceRefPtr &to_manage);
   virtual void DeregisterDevice(const DeviceRefPtr &to_forget);