Build update_engine_sideload.

Add a new "sideload" executable target that applies an update payload
directly using the UpdateAttempterAndroid.

This initial CL buils a dynamically linked program that's targeted to
run in the system image for now, but will later be transformed into a
static binary to run from the recovery environment.

Bug: 27178350
TEST=Applied a payload directly on a device using:
`update_engine_sideload --payload=file://foo/bar ...`

(cherry picked from commit 03a4de7dc77b058987fc0670f4f67ba10ff31bc8)

Change-Id: Idbde52fff9ace53c03f34103664f51b9db45027d
diff --git a/update_attempter.h b/update_attempter.h
index b045614..40c7382 100644
--- a/update_attempter.h
+++ b/update_attempter.h
@@ -244,6 +244,10 @@
     service_observers_.erase(observer);
   }
 
+  const std::set<ServiceObserverInterface*>& service_observers() {
+    return service_observers_;
+  }
+
   // Remove all the observers.
   void ClearObservers() { service_observers_.clear(); }