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.cc b/cellular.cc
index db6df6e..4b3d399 100644
--- a/cellular.cc
+++ b/cellular.cc
@@ -240,8 +240,12 @@
 void Cellular::OnModemStarted(const EnabledStateChangedCallback &callback,
                               const Error &error) {
   SLOG(Cellular, 2) << __func__ << ": " << GetStateString(state_);
-  if (state_ == kStateDisabled)
+  if (state_ == kStateDisabled) {
     SetState(kStateEnabled);
+    // Registration state updates may have been ignored while the
+    // modem was not yet marked enabled.
+    HandleNewRegistrationState();
+  }
   callback.Run(error);
 }