Bazel client: reduce dependency on <unistd.h>

In this change:

- rename WriteFileToStreamOrDie to
WriteFileToStderrOrDie (since we only ever used it
for stderr)

- replace open/write/read/close operations with
blaze_util::ReadFile/WriteFile

- wrap ToString(getpid()) in a utility function

- move SyncFile to file_<platform>

--
MOS_MIGRATED_REVID=139560397
diff --git a/src/main/cpp/util/file_platform.h b/src/main/cpp/util/file_platform.h
index 5cddc3d..a807c0d 100644
--- a/src/main/cpp/util/file_platform.h
+++ b/src/main/cpp/util/file_platform.h
@@ -39,6 +39,10 @@
 // Returns true if `path` refers to a directory or a symlink/junction to one.
 bool IsDirectory(const std::string& path);
 
+// Calls fsync() on the file (or directory) specified in 'file_path'.
+// pdie() if syncing fails.
+void SyncFile(const std::string& path);
+
 // Returns the last modification time of `path` in milliseconds since the Epoch.
 // Returns -1 upon failure.
 time_t GetMtimeMillisec(const std::string& path);