shill: Implement service sorting

Sort the list of Services for presentation to
RPC callers, essentially copying the current flimflam
sorting criteria.  Introduce the TechnologyOrder to
the Manager.

BUG=chromium-os:20114
TEST=New unit tests

Change-Id: I766b2297ba3170a7a6ab5adfe68425a8011be4fb
Reviewed-on: http://gerrit.chromium.org/gerrit/8205
Tested-by: Paul Stewart <pstew@chromium.org>
Reviewed-by: mukesh agrawal <quiche@chromium.org>
diff --git a/cellular_service.h b/cellular_service.h
index 072a08e..d9c0cd2 100644
--- a/cellular_service.h
+++ b/cellular_service.h
@@ -33,6 +33,7 @@
   virtual void Connect(Error *error);
   virtual void Disconnect();
   virtual void ActivateCellularModem(const std::string &carrier, Error *error);
+  virtual bool TechnologyIs(const Technology::Identifier type) const;
 
   // cellular_<MAC>_<Service_Operator_Name>
   std::string GetStorageIdentifier();