BootControlAndroid: Implement using libhardware.

This simply calls into the a boot_control HAL implementation loaded with
libhardware. I've tested it with the implementation located in
system/extras/boot_control_copy.

The only non-trivial routine here is GetPartitionDevice() which I've
hand-tested on a device using the following snippet of code:

  string names[] = {"boot", "system", "nope_enoent"};
  for (string name : names) {
    for (int slot = 0; slot <= 2; slot++) {
      string device;
      if (!GetPartitionDevice(name, slot, &device))
        device = "NOTHERE";
      LOG(INFO) << "slot:" << slot << " part:" << name << " -> " << device;
    }
  }

Change-Id: I1280325bd7cd4cf1cc9a33ef13c2f46f215da6e6
diff --git a/Android.mk b/Android.mk
index be9c761..70cbdce 100644
--- a/Android.mk
+++ b/Android.mk
@@ -107,12 +107,15 @@
     update_engine-dbus-adaptor \
     update_engine-dbus-libcros-client \
     update_engine_client-dbus-proxies \
-    libbz
+    libbz \
+    libfs_mgr
 LOCAL_SHARED_LIBRARIES += \
     libprotobuf-cpp-lite-rtti \
     libdbus \
     libcrypto \
     libcurl \
+    libcutils \
+    libhardware \
     libmetrics \
     libssl \
     libexpat \
@@ -187,6 +190,7 @@
 LOCAL_STATIC_LIBRARIES += \
     libupdate_engine \
     libbz \
+    libfs_mgr \
     update_metadata-protos \
     update_engine-dbus-adaptor \
     update_engine-dbus-libcros-client \
@@ -196,6 +200,8 @@
     libdbus \
     libcrypto \
     libcurl \
+    libcutils \
+    libhardware \
     libmetrics \
     libssl \
     libexpat \
@@ -230,6 +236,7 @@
 LOCAL_STATIC_LIBRARIES += \
     libupdate_engine \
     libbz \
+    libfs_mgr \
     update_metadata-protos \
     update_engine-dbus-adaptor \
     update_engine-dbus-libcros-client \
@@ -279,6 +286,7 @@
     libpayload_generator \
     libupdate_engine \
     libbz \
+    libfs_mgr \
     update_metadata-protos \
     update_engine-dbus-adaptor \
     update_engine-dbus-libcros-client \