Refactor Blaze command line construction to allow for greater flexibility and separation of concerns.

--
MOS_MIGRATED_REVID=122067150
diff --git a/src/main/cpp/blaze_startup_options.h b/src/main/cpp/blaze_startup_options.h
index 7ffaa83..d5ab0af 100644
--- a/src/main/cpp/blaze_startup_options.h
+++ b/src/main/cpp/blaze_startup_options.h
@@ -93,6 +93,20 @@
   // the startup options.
   string GetJvm();
 
+  // Returns the executable used to start the Blaze server, typically the given
+  // JVM.
+  string GetExe(const string &jvm, const string &jar_path);
+
+  // Adds JVM prefix flags to be set. These will be added before all other
+  // JVM flags.
+  void AddJVMArgumentPrefix(const string &javabase,
+    std::vector<string> *result) const;
+
+  // Adds JVM suffix flags. These will be added after all other JVM flags, and
+  // just before the Blaze server startup flags.
+  void AddJVMArgumentSuffix(const string &real_install_dir,
+    const string &jar_path, std::vector<string> *result) const;
+
   // Adds JVM tuning flags for Blaze.
   //
   // Returns the exit code after this operation. "error" will be set to a