shill: wifi: Scan for hidden SSIDs

Find all services with the "hidden" property set.  If any exist,
specify the "SSIDs" argument to wpa_supplicant and supply up to
MAX_SSIDS-1 of them as arguments to the scan, as well as the
broadcast SSID.

Side effect -- removed the "services_" vector from the Service
superclass.  I don't think a non-subclassed Service vector makes
any sense to keep around.

BUG=chromium-os:22074
TEST=New Unit Test

Change-Id: I52af8b81d301a9561812af04a16df6e6fcc644bc
Reviewed-on: https://gerrit.chromium.org/gerrit/11347
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Commit-Ready: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/wifi.h b/wifi.h
index 1940494..b92fd69 100644
--- a/wifi.h
+++ b/wifi.h
@@ -68,6 +68,7 @@
   static const char kManagerErrorUnsupportedServiceType[];
   static const char kManagerErrorUnsupportedServiceMode[];
 
+  ByteArrays GetHiddenSSIDList();
   void ScanDoneTask();
   void ScanTask();
 
@@ -87,6 +88,7 @@
   bool scan_pending_;
   uint16 scan_interval_;
   bool link_up_;
+  std::vector<WiFiServiceRefPtr> services_;
 
   friend class WiFiMainTest;  // access to supplicant_*_proxy_, link_up_
   DISALLOW_COPY_AND_ASSIGN(WiFi);