shill: make WiFiServices aware of their Endpoints

With this CL, WiFi makes a WiFiService aware of its
Endpoints, by calling AddEndpoint when an Endpoint
is found for a Service. Correspondingly, WiFi notifies
a WiFiService of the disappearance via RemoveEndpoint.

WiFiService uses this information to determine whether
or not it (the Service) is visible. Using Endpoint
information to inform the SignalStrength property is
left for a futre CL.

Collateral changes:
- added TODOs to Profile and WiFi
- switched to creating Services as soon as Endpoints
  are found (rather than waiting for a ScanDone signal)

BUG=chromium-os:22996, chromium-os:22948
TEST=unit tests

Change-Id: I7b4acf315418d1c3bc494bd4a37cdd85161c6ab0
Reviewed-on: https://gerrit.chromium.org/gerrit/12401
Tested-by: mukesh agrawal <quiche@chromium.org>
Reviewed-by: Gaurav Shah <gauravsh@chromium.org>
Commit-Ready: mukesh agrawal <quiche@chromium.org>
diff --git a/wifi.h b/wifi.h
index 94877aa..9ed174b 100644
--- a/wifi.h
+++ b/wifi.h
@@ -47,6 +47,7 @@
   // wpa_supplicant.
   void BSSAdded(const ::DBus::Path &BSS,
                 const std::map<std::string, ::DBus::Variant> &properties);
+  void BSSRemoved(const ::DBus::Path &BSS);
   void PropertiesChanged(
       const std::map<std::string, ::DBus::Variant> &properties);
   void ScanDone();