AU/unittest: postinstall tests use uniquely named stateful + working directories

This should allow these tests to be run in parallel. Also includes an
extension to PostinstallRunnerAction and two global powerwash marker
utility functions to allow testing with uniquely named marker file paths
(necessary to avoid race conditions when multiple tests are run in
parallel).

BUG=chromium:236465
TEST=Uniquely named directories created, used and removed.

Change-Id: I5dde0c0732c51e9e3bb2240cf7e0cac03bcde529
Reviewed-on: https://gerrit.chromium.org/gerrit/60864
Commit-Queue: Gilad Arnold <garnold@chromium.org>
Reviewed-by: Gilad Arnold <garnold@chromium.org>
Tested-by: Gilad Arnold <garnold@chromium.org>
diff --git a/utils.h b/utils.h
index bd4d2d6..9b93134 100644
--- a/utils.h
+++ b/utils.h
@@ -318,13 +318,15 @@
 // error codes or the bit flags) for logging purposes.
 std::string CodeToString(ErrorCode code);
 
-// Creates the powerwash marker file with the appropriate commands in it.
-// Returns true if successfully created. False otherwise.
-bool CreatePowerwashMarkerFile();
+// Creates the powerwash marker file with the appropriate commands in it.  Uses
+// |file_path| as the path to the marker file if non-NULL, otherwise uses the
+// global default. Returns true if successfully created.  False otherwise.
+bool CreatePowerwashMarkerFile(const char* file_path);
 
-// Deletes the marker file used to trigger Powerwash using clobber-state.
-// Returns true if successfully deleted. False otherwise.
-bool DeletePowerwashMarkerFile();
+// Deletes the marker file used to trigger Powerwash using clobber-state.  Uses
+// |file_path| as the path to the marker file if non-NULL, otherwise uses the
+// global default. Returns true if successfully deleted. False otherwise.
+bool DeletePowerwashMarkerFile(const char* file_path);
 
 // Assumes you want to install on the "other" device, where the other
 // device is what you get if you swap 1 for 2 or 3 for 4 or vice versa