shill: manager: Search for services by GUID

Add a function to search by GUID, and use this function if GetService
is passed a GUID parameter.

BUG=chromium-os:22800
TEST=New unit test

Change-Id: I24799ef3c5b014670e089ff70c4116b481e58371
Reviewed-on: https://gerrit.chromium.org/gerrit/18689
Commit-Ready: Paul Stewart <pstew@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/manager.h b/manager.h
index 85d7c6d..c1e2491 100644
--- a/manager.h
+++ b/manager.h
@@ -117,6 +117,10 @@
   // the profile.
   virtual bool HandleProfileEntryDeletion(const ProfileRefPtr &profile,
                                           const std::string &entry_name);
+  // Find a registered service that contains a GUID property that
+  // matches |guid|.
+  virtual ServiceRefPtr GetServiceWithGUID(const std::string &guid,
+                                           Error *error);
   // Find a service that is both the member of |profile| and has a
   // storage identifier that matches |entry_name|.  This function is
   // called by the Profile in order to return a profile entry's properties.