shill: cellular: Handle the 'failed' modem state.

BUG=chromium:309091
TEST=Tested the following:
1. Build and run unit tests.
2. Run network3g tests on Falco.
3. Manually verify that shill handles the 'failed' modem state on a
   Falco with a MU736 modem but with the SIM removed.

Change-Id: Ie602db3db358e678fa10910565c120f4daacb6a5
Reviewed-on: https://chromium-review.googlesource.com/173744
Reviewed-by: Arman Uguray <armansito@chromium.org>
Reviewed-by: Prathmesh Prabhu <pprabhu@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
Commit-Queue: Ben Chan <benchan@chromium.org>
Commit-Queue: David James <davidjames@chromium.org>
diff --git a/cellular_capability_gsm.cc b/cellular_capability_gsm.cc
index 1cb3697..71bb075 100644
--- a/cellular_capability_gsm.cc
+++ b/cellular_capability_gsm.cc
@@ -190,6 +190,7 @@
 
 bool CellularCapabilityGSM::IsUnderlyingDeviceRegistered() const {
   switch (cellular()->modem_state()) {
+    case Cellular::kModemStateFailed:
     case Cellular::kModemStateUnknown:
     case Cellular::kModemStateDisabled:
     case Cellular::kModemStateInitializing: