shill: cellular: Obtain IMSI when a GSM device is constructed.

This CL modifies CellularCapabilityGSM to obtain the IMSI value at
construction instead of when the modem is enabled. The IMSI value is
checked by Chrome to determine if a SIM is present before the device can
be enabled.

BUG=chromium-os:31651
TEST=Tested the following:
1. Build and run unit tests.
2. Verify that Gobi and Icera modems can be enabled as follows:
   a. Configure the modem in GSM and insert a SIM with no PIN lock.
   b. Disable the cellular device from UI.
   c. Reboot the Chromebook.
   d. Enable the cellular device from UI and it works.
   e. Repeat with a PIN-locked SIM.
3. Verify that Gobi and Icera modems cannot be enabled as follows:
   a. Configure the modem in GSM with no SIM inserted.
   b. Disable the cellular device from UI.
   c. Reboot the Chromebook.
   d. Enable the cellular device from UI and it does not work.

Change-Id: Iff21f972661cedb383b9a6820fdc7ba3160fd01a
Reviewed-on: https://gerrit.chromium.org/gerrit/29313
Commit-Ready: Ben Chan <benchan@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
diff --git a/mock_cellular.cc b/mock_cellular.cc
index 6b376b9..c631a8c 100644
--- a/mock_cellular.cc
+++ b/mock_cellular.cc
@@ -20,10 +20,11 @@
                            const std::string &owner,
                            const std::string &service,
                            const std::string &path,
-                           mobile_provider_db *provider_db)
+                           mobile_provider_db *provider_db,
+                           ProxyFactory *proxy_factory)
     : Cellular(control_interface, dispatcher, metrics, manager, link_name,
                address, interface_index, type, owner, service, path,
-               provider_db) {}
+               provider_db, proxy_factory) {}
 
 MockCellular::~MockCellular() {}