Android: Implement the binder service.

This patch introduces the service delegate interface for non-Brillo
targets, which is the class in charge of implementing the API exposed
by the service. The binder service for non-Brillo targets is now
completed using this interface.

The other side of this interface will be implemented in a follow up CL,
while this CL includes only the interface and its usage.

To accomodate non-Brillo targets, the generic ServiceObserverInterface
is extended with the PayloadApplicationComplete message, which will be
implemented for all targets in the future.

Bug: 25631949
TEST=`mmma system/update_engine` on aosp_arm-eng and edison-eng

Change-Id: I9fa8e9565ae92515e81e07d2cef562fc4e11a7ba
diff --git a/daemon_state_android.h b/daemon_state_android.h
index 2b8926c..e0fac00 100644
--- a/daemon_state_android.h
+++ b/daemon_state_android.h
@@ -20,6 +20,7 @@
 #include <set>
 
 #include "update_engine/daemon_state_interface.h"
+#include "update_engine/service_delegate_android_interface.h"
 #include "update_engine/service_observer_interface.h"
 
 namespace chromeos_update_engine {
@@ -27,6 +28,7 @@
 class DaemonStateAndroid : public DaemonStateInterface {
  public:
   DaemonStateAndroid() = default;
+  ~DaemonStateAndroid() override = default;
 
   bool Initialize();
 
@@ -35,6 +37,13 @@
   void AddObserver(ServiceObserverInterface* observer) override;
   void RemoveObserver(ServiceObserverInterface* observer) override;
 
+  const std::set<ServiceObserverInterface*>& service_observers() {
+    return service_observers_;
+  }
+
+  // Return a pointer to the service delegate.
+  ServiceDelegateAndroidInterface* service_delegate();
+
  protected:
   std::set<ServiceObserverInterface*> service_observers_;
 };