shill: Convert code to use the newest version of libchrome.

The biggest change is a switch from using the deprecated
Task and CallbackN mechanisms to using the new Callback
mechanism.

Note: Original CL was https://gerrit.chromium.org/gerrit/16156.
This is logically another patch to that CL, but since the
latter was already merged, and is considered closed by
Gerrit, it's necessary to create a new CL.

BUG=chromium-os:15330
TEST=Build shill and run it on a zgb with a modem. Build and
run unit tests.
CQ-DEPEND=I37628863370323d30cac493764ea28f8ffd42637

Change-Id: I3ae78a3aa44ec167b79f2170d07650ece888254f
Reviewed-on: https://gerrit.chromium.org/gerrit/18030
Reviewed-by: Eric Shienbrood <ers@chromium.org>
Tested-by: Eric Shienbrood <ers@chromium.org>
Commit-Ready: Eric Shienbrood <ers@chromium.org>
diff --git a/rtnl_handler.cc b/rtnl_handler.cc
index 0c6cee8..0ab508b 100644
--- a/rtnl_handler.cc
+++ b/rtnl_handler.cc
@@ -16,6 +16,7 @@
 #include <linux/rtnetlink.h>
 #include <fcntl.h>
 
+#include <base/bind.h>
 #include <base/logging.h>
 
 #include "shill/event_dispatcher.h"
@@ -27,12 +28,15 @@
 #include "shill/rtnl_message.h"
 #include "shill/sockets.h"
 
+using base::Bind;
+using base::Unretained;
 using std::string;
 
 namespace shill {
 
-static base::LazyInstance<RTNLHandler> g_rtnl_handler(
-    base::LINKER_INITIALIZED);
+// TODO(ers): not using LAZY_INSTANCE_INITIALIZER
+// because of http://crbug.com/114828
+static base::LazyInstance<RTNLHandler> g_rtnl_handler = {0, {{0}}};
 
 RTNLHandler::RTNLHandler()
     : sockets_(NULL),
@@ -41,7 +45,7 @@
       request_flags_(0),
       request_sequence_(0),
       last_dump_sequence_(0),
-      rtnl_callback_(NewCallback(this, &RTNLHandler::ParseRTNL)) {
+      rtnl_callback_(Bind(&RTNLHandler::ParseRTNL, Unretained(this))) {
   VLOG(2) << "RTNLHandler created";
 }
 
@@ -82,7 +86,7 @@
   }
 
   rtnl_handler_.reset(dispatcher->CreateInputHandler(rtnl_socket_,
-                                                     rtnl_callback_.get()));
+                                                     rtnl_callback_));
   sockets_ = sockets;
 
   NextRequest(last_dump_sequence_);