Split Modem into ModemClassic and Modem1

Along the way:

  Restructure ModemManagerXxx to use the split modem classes.

  Add new mocks to limit scope of modem tests

  Change modem state enum to a neutral format and convert from MM1 and
  MMClassic to this format.

  Fix a bug where we weren't properly releasing a callback in
  DBusObjectManagerProxy.

  Add new DBus property matchers

BUG=chromium-os:27935,chromium-os:27936
TEST=unit tests

Change-Id: Ib78c7dfd9e30fe556f09a4427fd71c9d785210c9
Reviewed-on: https://gerrit.chromium.org/gerrit/19228
Commit-Ready: David Rochberg <rochberg@chromium.org>
Reviewed-by: David Rochberg <rochberg@chromium.org>
Tested-by: David Rochberg <rochberg@chromium.org>
diff --git a/cellular.h b/cellular.h
index cbe2197..a8df25a 100644
--- a/cellular.h
+++ b/cellular.h
@@ -28,7 +28,9 @@
  public:
   enum Type {
     kTypeGSM,
-    kTypeCDMA
+    kTypeCDMA,
+    kTypeUniversal,  // ModemManager1
+    kTypeInvalid,
   };
 
   // The device states progress linearly from Disabled to Linked.
@@ -48,18 +50,19 @@
     kStateLinked,
   };
 
-  // These should be kept in sync with ModemManager's mm-modem.h:MMModemState.
   enum ModemState {
     kModemStateUnknown = 0,
-    kModemStateDisabled = 10,
-    kModemStateDisabling = 20,
-    kModemStateEnabling = 30,
-    kModemStateEnabled = 40,
-    kModemStateSearching = 50,
-    kModemStateRegistered = 60,
-    kModemStateDisconnecting = 70,
-    kModemStateConnecting = 80,
-    kModemStateConnected = 90,
+    kModemStateDisabled = 1,
+    kModemStateInitializing = 2,
+    kModemStateLocked = 3,
+    kModemStateDisabling = 4,
+    kModemStateEnabling = 5,
+    kModemStateEnabled = 6,
+    kModemStateSearching = 7,
+    kModemStateRegistered = 8,
+    kModemStateDisconnecting = 9,
+    kModemStateConnecting = 10,
+    kModemStateConnected = 11,
   };
 
   class Operator {
@@ -140,7 +143,8 @@
   // destroying or updating the CellularService.
   void HandleNewRegistrationState();
 
-  void OnModemManagerPropertiesChanged(const DBusPropertiesMap &properties);
+  virtual void OnModemManagerPropertiesChanged(
+      const DBusPropertiesMap &properties);
 
   // Inherited from Device.
   virtual void Start(Error *error, const EnabledStateChangedCallback &callback);