shill: Add a ModemInfo object that's a peer of DeviceInfo.

ModemInfo is responsible for managing ModemManager instances. Each ModemManager
instance watches for and handles an individual ModemManager DBus service. Each
ModemManager will be responsible for creating cellular devices associated with
that ModemManager.

BUG=chromium-os:17576
TEST=unit tests, tested on device

Change-Id: Ie9946cba4465aea8671305e32596fc9f6cca96e2
Reviewed-on: http://gerrit.chromium.org/gerrit/4124
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
diff --git a/glib.cc b/glib.cc
index 95980c3..2b64ed3 100644
--- a/glib.cc
+++ b/glib.cc
@@ -28,6 +28,26 @@
   return g_base64_encode(data, len);
 }
 
+void GLib::BusUnwatchName(guint watcher_id) {
+  g_bus_unwatch_name(watcher_id);
+}
+
+guint GLib::BusWatchName(GBusType bus_type,
+                         const gchar *name,
+                         GBusNameWatcherFlags flags,
+                         GBusNameAppearedCallback name_appeared_handler,
+                         GBusNameVanishedCallback name_vanished_handler,
+                         gpointer user_data,
+                         GDestroyNotify user_data_free_func) {
+  return g_bus_watch_name(bus_type,
+                          name,
+                          flags,
+                          name_appeared_handler,
+                          name_vanished_handler,
+                          user_data,
+                          user_data_free_func);
+}
+
 guint GLib::ChildWatchAdd(GPid pid,
                           GChildWatchFunc function,
                           gpointer data) {
@@ -170,4 +190,8 @@
   g_strfreev(str_array);
 }
 
+void GLib::TypeInit() {
+  g_type_init();
+}
+
 }  // namespace shill