libchromeos: Add generic DBus data serialization/deserialization

Provide generic methods to write arbitrary C++ data to D-Bus
message buffers and read it back. Implement generic conatainer
support such as std::vector, std::map, std::pair to support
D-Bus ARRAY, DICT, STRUCT data types. Also using chromeos::Any
as a D-Bus VARIANT type.

Added a bunch of unit tests for dbus_utils.

BUG=None
TEST=FEATURES=test emerge-link libchromeos
     FEATURES=test emerge-link buffet

Change-Id: Ic445e11fb2e65c8243df183c6e93c4b3cb881dc8
Reviewed-on: https://chromium-review.googlesource.com/213923
Reviewed-by: Ben Chan <benchan@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/manager.cc b/buffet/manager.cc
index 9a11040..ee7379f 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -97,8 +97,7 @@
 
 std::string Manager::HandleStartRegisterDevice(
     chromeos::ErrorPtr* error,
-    const std::map<std::string,
-    std::unique_ptr<base::Value>>& params) {
+    const std::map<std::string, std::string>& params) {
   LOG(INFO) << "Received call to Manager.StartRegisterDevice()";
 
   return device_info_->StartRegistration(params, error);