shill: group endpoints into services

Previously, we'd create one WiFiService for every WiFiEndpoint.
This would lead to redundant services appearing in the Service
list, and also cause problems with tracking the state of a
Service.

To fix this, we group Endpoints together by using FindService
to check if an appropriate Service exists, and only create a new
Service if no match is found.

BUG=chromium-os:22995
TEST=new unittests, network_WiFiRoaming.008Prefer5GHz

Bonus changes:
- remove some obsolete data structures
- fix a typo on my userid

Change-Id: Id3faa707531e61aa9bcb53582e7d53e7f6546eb3
Reviewed-on: https://gerrit.chromium.org/gerrit/12017
Commit-Ready: mukesh agrawal <quiche@chromium.org>
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Tested-by: mukesh agrawal <quiche@chromium.org>
diff --git a/wifi_endpoint.cc b/wifi_endpoint.cc
index cd574e8..4234513 100644
--- a/wifi_endpoint.cc
+++ b/wifi_endpoint.cc
@@ -123,7 +123,7 @@
 
   set<KeyManagement> wpa_key_management_methods;
   if (ContainsKey(properties, wpa_supplicant::kPropertyWPA)) {
-    // TODO(qucihe): check type before casting
+    // TODO(quiche): check type before casting
     const map<string, ::DBus::Variant> rsn_properties(
         properties.find(wpa_supplicant::kPropertyWPA)->second.
         operator map<string, ::DBus::Variant>());