buffet: Add DBusCommandDispacher and hook it up to CommandQueue

Added DBusCommandDispacher class that maintains DBusCommandProxy object
for each instance of CommandInstance class added to the CommandQueue.

As soon as a command instance is removed from the queue, D-Bus command
dispatcher removes the corresponding command proxy object from D-Bus.

BUG=chromium:374864
TEST=FEATURES=test emerge-link buffet

Change-Id: Ib7ce7370bd3ee471e22f02b8546675021ff063d7
Reviewed-on: https://chromium-review.googlesource.com/211642
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Christopher Wiley <wiley@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/manager.cc b/buffet/manager.cc
index ac693f1..7c3cbd5 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -56,7 +56,8 @@
   //              the properties interface.
   state_.SetValue("{}");
   dbus_object_.RegisterAsync(cb);
-  command_manager_ = std::make_shared<CommandManager>();
+  command_manager_ =
+      std::make_shared<CommandManager>(dbus_object_.GetObjectManager());
   command_manager_->Startup();
   device_info_ = std::unique_ptr<DeviceRegistrationInfo>(
       new DeviceRegistrationInfo(command_manager_));