Make checkpointing atomic

Update Engine currently has a bug where if it the process is interrupted
during checkpointing, we are unable to resume progress from where we
were previously. This is because prefs are reset at the beginning of
checkpointing and then slowly updated during checkpointing, if
update_engine is interrupted during this stage, it loses its state. This
change allows us to update the prefs non-destructively and then
atomically replace the old prefs with the new ones.

Test: m update_engine. update_device.py tested resume ota
Change-Id: I3a7edf7498be9cde5c6f34e3cb259a7853f4f443
diff --git a/common/fake_prefs.h b/common/fake_prefs.h
index 7ae9fb9..721cf24 100644
--- a/common/fake_prefs.h
+++ b/common/fake_prefs.h
@@ -59,6 +59,9 @@
   void AddObserver(std::string_view key, ObserverInterface* observer) override;
   void RemoveObserver(std::string_view key,
                       ObserverInterface* observer) override;
+  bool StartTransaction() override { return false; }
+  bool CancelTransaction() override { return false; }
+  bool SubmitTransaction() override { return false; }
 
  private:
   enum class PrefType {