shill: cellular: Ensure that home_provider is set when modem enabled

Ensure that the home_provider is set when modem enabled.  It is not
necessary to call either GetStatus or Register when a modem is
enabled, so delete the dead code.

Handle the registration state in Cellular::OnModemStarted because
registration state changes which occur before the device is enabled
are ignored.

Moved public methods to be protected methods and pushed them into
CellularCapabilityClassic since they are no longer used in
CellularCapabilityUniversal and do not need to be public.

Update the unit tests to ensure that home_provider_ is set when the
information from the SIM is updated.

BUG=none
TEST=unit tests, ran manually and connected without specifying an APN

Change-Id: Iadd400c99424e7dad858a264f58124c5636ff63f
Reviewed-on: https://gerrit.chromium.org/gerrit/21814
Tested-by: Jason Glasgow <jglasgow@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Commit-Ready: Jason Glasgow <jglasgow@chromium.org>
diff --git a/cellular_capability_classic.h b/cellular_capability_classic.h
index 4e62020..664c9ba 100644
--- a/cellular_capability_classic.h
+++ b/cellular_capability_classic.h
@@ -88,6 +88,8 @@
       const std::vector<std::string> &invalidated_properties);
 
  protected:
+  virtual void GetRegistrationState() = 0;
+
   // The following five methods are only ever called as
   // callbacks (from the main loop), which is why they
   // don't take an Error * argument.
@@ -101,6 +103,7 @@
   void FinishDisable(const ResultCallback &callback);
   virtual void InitProxies();
   virtual void ReleaseProxies();
+  virtual void UpdateStatus(const DBusPropertiesMap &properties) = 0;
 
   static void OnUnsupportedOperation(const char *operation, Error *error);