Merge latest version of libweave and update weaved to reflect changes

libweave has a number of interafce changes which need to be reflected in
weaved's implementation of the interfaces. This commit brings weaved in
sync with the current version of libweave.

Change-Id: If6355ef2c19e38b56f96b027038e2d6da0f44709
diff --git a/buffet/dbus_command_dispatcher.cc b/buffet/dbus_command_dispatcher.cc
index 03f4789..0edb92a 100644
--- a/buffet/dbus_command_dispatcher.cc
+++ b/buffet/dbus_command_dispatcher.cc
@@ -6,6 +6,7 @@
 
 #include <chromeos/dbus/exported_object_manager.h>
 #include <weave/command.h>
+#include <weave/device.h>
 
 #include "buffet/dbus_command_proxy.h"
 #include "buffet/dbus_constants.h"
@@ -17,14 +18,16 @@
 
 DBusCommandDispacher::DBusCommandDispacher(
     const base::WeakPtr<ExportedObjectManager>& object_manager,
-    weave::Commands* command_manager)
+    weave::Device* device)
     : object_manager_{object_manager} {
-  command_manager->AddOnCommandAddedCallback(base::Bind(
+  device->AddCommandHandler("", base::Bind(
       &DBusCommandDispacher::OnCommandAdded, weak_ptr_factory_.GetWeakPtr()));
 }
 
-void DBusCommandDispacher::OnCommandAdded(weave::Command* command) {
-  if (!object_manager_)
+void DBusCommandDispacher::OnCommandAdded(
+    const std::weak_ptr<weave::Command>& cmd) {
+  auto command = cmd.lock();
+  if (!object_manager_ || !command)
     return;
   std::unique_ptr<DBusCommandProxy> proxy{new DBusCommandProxy(
       object_manager_.get(), object_manager_->GetBus(), command,