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/service_observer_interface.h b/service_observer_interface.h
index 73d8350..75a739f 100644
--- a/service_observer_interface.h
+++ b/service_observer_interface.h
@@ -21,6 +21,7 @@
 #include <string>
 
 #include "update_engine/client_library/include/update_engine/update_status.h"
+#include "update_engine/common/error_code.h"
 
 namespace chromeos_update_engine {
 
@@ -36,6 +37,9 @@
                                 const std::string& new_version,
                                 int64_t new_size) = 0;
 
+  // Called whenever an update attempt is completed.
+  virtual void SendPayloadApplicationComplete(ErrorCode error_code) = 0;
+
   // Called whenever the channel we are tracking changes.
   virtual void SendChannelChangeUpdate(const std::string& tracking_channel) = 0;