shill: Lookup the mobile provider database to obtain GSM network info.

Load the provider database in ModemInfo. Use the database to lookup operator
name and country when the GSM registration state changes.

This also adds a small mobile provider database used for unit test purposes.

BUG=chromium-os:19699
TEST=unit tests

Change-Id: I5cf0b6d0682d1e0f47fe4b92a45ec6c48837b650
Reviewed-on: https://gerrit.chromium.org/gerrit/10718
Commit-Ready: Darin Petkov <petkov@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
diff --git a/modem.cc b/modem.cc
index f1fc98e..a5569b9 100644
--- a/modem.cc
+++ b/modem.cc
@@ -30,14 +30,16 @@
              const std::string &path,
              ControlInterface *control_interface,
              EventDispatcher *dispatcher,
-             Manager *manager)
+             Manager *manager,
+             mobile_provider_db *provider_db)
     : proxy_factory_(ProxyFactory::GetInstance()),
       owner_(owner),
       path_(path),
       task_factory_(this),
       control_interface_(control_interface),
       dispatcher_(dispatcher),
-      manager_(manager) {
+      manager_(manager),
+      provider_db_(provider_db) {
   LOG(INFO) << "Modem created: " << owner << " at " << path;
 }
 
@@ -120,7 +122,8 @@
                          interface_index,
                          type,
                          owner_,
-                         path_);
+                         path_,
+                         provider_db_);
 
   uint32 modem_state = Cellular::kModemStateUnknown;
   DBusProperties::GetUint32(properties, kPropertyState, &modem_state);