shill: cellular: Add Cellular.SIMPresent property.

This CL adds Cellular.SIMPresent property to indicate whether a SIM card
is present on a GSM or LTE modem.

BUG=chromium-os:34002
TEST=Tested the following:
1. Build and run unit tests.
2. Verify that the value of Cellular.SIMPresent property correctly
   indicates the presence of a SIM card on Novatel E396 and E362 modems.
CQ-DEPEND=I01a2c1dcf00fee78ce1f9f6c51a1df76327ee044

Change-Id: Id94f8f48f66458c20a519aaefcdfe7d6a59d2e8b
Reviewed-on: https://gerrit.chromium.org/gerrit/35810
Reviewed-by: Darin Petkov <petkov@chromium.org>
Commit-Ready: Ben Chan <benchan@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
diff --git a/cellular_capability_gsm_unittest.cc b/cellular_capability_gsm_unittest.cc
index c364fc3..5829ed9 100644
--- a/cellular_capability_gsm_unittest.cc
+++ b/cellular_capability_gsm_unittest.cc
@@ -370,8 +370,10 @@
   ResultCallback callback = Bind(&CellularCapabilityGSMTest::TestCallback,
                                  Unretained(this));
   EXPECT_TRUE(capability_->imsi_.empty());
+  EXPECT_FALSE(capability_->sim_present_);
   capability_->GetIMSI(callback);
   EXPECT_EQ(kIMSI, capability_->imsi_);
+  EXPECT_TRUE(capability_->sim_present_);
   capability_->imsi_.clear();
   InitProviderDB();
   capability_->GetIMSI(callback);
@@ -394,6 +396,7 @@
   ResultCallback callback = Bind(&CellularCapabilityGSMTest::TestCallback,
                                  Unretained(this));
   EXPECT_TRUE(capability_->imsi_.empty());
+  EXPECT_FALSE(capability_->sim_present_);
 
   capability_->get_imsi_retries_ = 0;
   EXPECT_EQ(CellularCapabilityGSM::kGetIMSIRetryDelayMilliseconds,
@@ -408,6 +411,7 @@
   EXPECT_EQ(CellularCapabilityGSM::kGetIMSIRetryLimit + 1,
             capability_->get_imsi_retries_);
   EXPECT_TRUE(capability_->imsi_.empty());
+  EXPECT_FALSE(capability_->sim_present_);
 }
 
 TEST_F(CellularCapabilityGSMTest, GetMSISDN) {