Android: Implement the update attempter for Android.

This patch implements the update workflow for non-Brillo targets. Only
the applyPayload() method is implemented here with a minimal subset of
functionally implemented in it. This new class acts as the service
delegate, handling all the binder service method calls for non-Brillo
targets.

Bug: 25631949
TEST=FEATURES=test emerge-link update_engine
TEST=`mmma system/update_engine` on aosp_arm-eng and edison-eng
TEST=Deployed on a non-Brillo device and tested with update_engine_client

Change-Id: I678cd141633bc2c0920a09ef27a02d53682d5330
diff --git a/Android.mk b/Android.mk
index 686414d..bebcc52 100644
--- a/Android.mk
+++ b/Android.mk
@@ -359,12 +359,15 @@
 # loop to apply payloads provided by the upper layer via a Binder interface.
 ue_libupdate_engine_android_exported_static_libraries := \
     libpayload_consumer \
+    libfs_mgr \
     $(ue_libpayload_consumer_exported_static_libraries)
 ue_libupdate_engine_android_exported_shared_libraries := \
     $(ue_libpayload_consumer_exported_shared_libraries) \
     libbinder \
     libbinderwrapper \
     libbrillo-binder \
+    libcutils \
+    libhardware \
     libutils
 
 include $(CLEAR_VARS)
@@ -386,8 +389,12 @@
     binder_bindings/android/os/IUpdateEngine.aidl \
     binder_bindings/android/os/IUpdateEngineCallback.aidl \
     binder_service_android.cc \
+    boot_control_android.cc \
     daemon.cc \
-    daemon_state_android.cc
+    daemon_state_android.cc \
+    hardware_android.cc \
+    proxy_resolver.cc \
+    update_attempter_android.cc
 include $(BUILD_STATIC_LIBRARY)
 
 endif  # !defined(BRILLO)