shill: Add Manager.UninitializedTechnologies property.

This CL adds an UninitializedTechnologies property to the Manager
interface to include the technologies of uninitialized devices that have
been detected by shill but may not have finished initialization and
created a Device object. This allows the CrOS network UI to show the
the technologies of uninitialized devices as 'initializing'.

BUG=chromium-os:37877
TEST=Tested the following:
1. Build and run unit tests.
2. Verify that CrOS network UI shows the cellular technology as
   initializing shortly after the modem is detected but before it
   is fully initialized.

Change-Id: Ibf5d8eebb734207c015636cad0ca0cd9e62c7ea9
Reviewed-on: https://gerrit.chromium.org/gerrit/41350
Commit-Queue: Ben Chan <benchan@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
diff --git a/manager.h b/manager.h
index 575d43d..6d64a94 100644
--- a/manager.h
+++ b/manager.h
@@ -224,6 +224,7 @@
   int suspend_delay_id_for_testing() const { return suspend_delay_id_; }
 
   virtual void UpdateEnabledTechnologies();
+  virtual void UpdateUninitializedTechnologies();
 
   // Writes the service |to_update| to persistant storage.  If the service's is
   // ephemeral, it is moved to the current profile.
@@ -309,6 +310,7 @@
   std::vector<std::string> ConnectedTechnologies(Error *error);
   std::string DefaultTechnology(Error *error);
   std::vector<std::string> EnabledTechnologies(Error *error);
+  std::vector<std::string> UninitializedTechnologies(Error *error);
   RpcIdentifiers EnumerateDevices(Error *error);
   RpcIdentifiers EnumerateProfiles(Error *error);
   // TODO(cmasone): This should be implemented by filtering |services_|.