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/filesystem_copier_action.h b/filesystem_copier_action.h
index acbdd05..4a61298 100644
--- a/filesystem_copier_action.h
+++ b/filesystem_copier_action.h
@@ -24,25 +24,11 @@
 
 namespace chromeos_update_engine {
 
-class FilesystemCopierAction;
 
-template<>
-class ActionTraits<FilesystemCopierAction> {
- public:
-  // Takes the install plan as input
-  typedef InstallPlan InputObjectType;
-  // Passes the install plan as output
-  typedef InstallPlan OutputObjectType;
-};
-
-class FilesystemCopierAction : public Action<FilesystemCopierAction> {
+class FilesystemCopierAction : public InstallPlanAction {
  public:
   FilesystemCopierAction(bool copying_kernel_install_path, bool verify_hash);
 
-  typedef ActionTraits<FilesystemCopierAction>::InputObjectType
-  InputObjectType;
-  typedef ActionTraits<FilesystemCopierAction>::OutputObjectType
-  OutputObjectType;
   void PerformAction();
   void TerminateProcessing();