Implement {Available|Connected|Enabled}Technolgies and DefaultTechnology

This is Part 1 of a series of changes required for the Manager to generate
the right set of DBus events allowing shill to properly tell Chrome about
connectivity.

Some other side-effects in the change (needed to implement the above):
- Emit these manager properties over DBus everytime we re-sort the Service
  vector.
- Add a technology data member to Device, this allows easy enumeration of
  technologies.
- Add interface for getting a handle to the selected service on a device.
- Map connected state to online instead of ready state. This is needed for
  so that Chrome doesn't wait for the portal detection code to switch the
  state from ready->online.
- Default set the ethernet service as connectable.

BUG=chromium-os:14887
TEST=1) manual test to verify shill properly configures the ethernet
     device and Chrome correctly detects that.
     2) new unit tests

Change-Id: Ib10f2f0836f8d4aacaad1491f58ed9b3b5d37e7d
Reviewed-on: https://gerrit.chromium.org/gerrit/12019
Tested-by: Gaurav Shah <gauravsh@chromium.org>
Reviewed-by: mukesh agrawal <quiche@chromium.org>
diff --git a/manager_dbus_adaptor.h b/manager_dbus_adaptor.h
index bc72273..d67128e 100644
--- a/manager_dbus_adaptor.h
+++ b/manager_dbus_adaptor.h
@@ -41,6 +41,8 @@
   void EmitUintChanged(const std::string &name, uint32 value);
   void EmitIntChanged(const std::string &name, int value);
   void EmitStringChanged(const std::string &name, const std::string &value);
+  void EmitStringsChanged(const std::string &name,
+                          const std::vector<std::string> &value);
   void EmitRpcIdentifierArrayChanged(
       const std::string &name, const std::vector<std::string> &value);
   void EmitStateChanged(const std::string &new_state);