AU: Many minor cleanup changes

postinstall: Run postinst twice, once for pre-commit (ie, before we
mark the install partition bootable in the partition table), and
post-commit (for after we do). This behavior is needed for specific
types of firmware update.

download action: flush caches, as we found was necessary in
memento_updater.sh

omaha request prep action: update the names of keys we look for in
lsb-release, also get the AU server url from a file, rather than
hard-code it.

set bootable flag action: GPT support.

also, some misc utility functions.

BUG=None
TEST=attached unittests

Review URL: http://codereview.chromium.org/1881001
diff --git a/set_bootable_flag_action.h b/set_bootable_flag_action.h
index 44e9555..2b45df3 100644
--- a/set_bootable_flag_action.h
+++ b/set_bootable_flag_action.h
@@ -7,6 +7,7 @@
 
 #include <string>
 #include "update_engine/action.h"
+#include "update_engine/install_plan.h"
 
 // This class takes in a device via the input pipe.  The device is the
 // partition (e.g. /dev/sda1), not the full device (e.g. /dev/sda).
@@ -22,9 +23,9 @@
 class ActionTraits<SetBootableFlagAction> {
  public:
   // Takes the device path as input.
-  typedef std::string InputObjectType;
+  typedef InstallPlan InputObjectType;
   // Passes the device path as output
-  typedef std::string OutputObjectType;
+  typedef InstallPlan OutputObjectType;
 };
 
 class SetBootableFlagAction : public Action<SetBootableFlagAction> {
@@ -45,11 +46,6 @@
   std::string Type() const { return StaticType(); }
 
  private:
-  // Returns true on success
-  bool ReadMbr(char* buffer, int buffer_len, const char* device);
-
-  // Returns true on success
-  bool WriteMbr(const char* buffer, int buffer_len, const char* device);
 
   DISALLOW_COPY_AND_ASSIGN(SetBootableFlagAction);
 };