Implement Rollback to previously booted partitions.

This CL implements rollback to whatever partition we ran from before.
We expose this functionality via dbus under AttemptRollback and expose
a new command-line option to update_engine_client that a developer can
use.

BUG=chromium:242665
TEST=Unittests, full update, update + rollback and verified.

Change-Id: Ie59f90b9a0b777dc1329592449090c70892236bf
Reviewed-on: https://gerrit.chromium.org/gerrit/58427
Commit-Queue: Chris Sosa <sosa@chromium.org>
Reviewed-by: Chris Sosa <sosa@chromium.org>
Tested-by: Chris Sosa <sosa@chromium.org>
diff --git a/dbus_service.cc b/dbus_service.cc
index 97aae35..f90b90e 100644
--- a/dbus_service.cc
+++ b/dbus_service.cc
@@ -101,6 +101,14 @@
   return TRUE;
 }
 
+gboolean update_engine_service_attempt_rollback(UpdateEngineService* self,
+                                                bool powerwash,
+                                                GError **error) {
+  LOG(INFO) << "Attempting rollback to non-active partitions.";
+  self->system_state_->update_attempter()->Rollback(powerwash);
+  return TRUE;
+}
+
 gboolean update_engine_service_reset_status(UpdateEngineService* self,
                                             GError **error) {
   *error = NULL;