Roll-forward of the startup options refactoring.

This CL is a verbatim reproduction of the following CLs, modulo adjustments
to cope with changes at HEAD:

* commit 4a45d92130a6b1306a3840d006df165b8040a6cf: Use inheritance to support site-specific options.
* commit dfb2c73eda3d2dd8787ea9b2d0a03b49dfa2acc5: Inject the product name via the per-product main.cc files.
* unknown commit: Remove the internal/external startup_options duality.

The cause that triggered the rollbacks was fixed separately in commit 69a8d7205287bedf3a6140ec9327e2fad1758c22
as prepartory work for this roll-forward, so things should work now.

--
MOS_MIGRATED_REVID=133139218
diff --git a/src/main/cpp/option_processor.cc b/src/main/cpp/option_processor.cc
index 87560b8..bb56efc 100644
--- a/src/main/cpp/option_processor.cc
+++ b/src/main/cpp/option_processor.cc
@@ -160,8 +160,10 @@
   return blaze_exit_code::SUCCESS;
 }
 
-OptionProcessor::OptionProcessor()
-    : initialized_(false), parsed_startup_options_(new BlazeStartupOptions()) {
+OptionProcessor::OptionProcessor(
+    std::unique_ptr<StartupOptions> default_startup_options) :
+    initialized_(false),
+    parsed_startup_options_(std::move(default_startup_options)) {
 }
 
 // Return the path to the user's rc file.  If cmdLineRcFile != NULL,
@@ -239,7 +241,7 @@
   }
 
   blaze_exit_code::ExitCode validate_startup_options_exit_code =
-      BlazeStartupOptions::ValidateStartupOptions(args, error);
+      parsed_startup_options_->ValidateStartupOptions(args, error);
   if (validate_startup_options_exit_code != blaze_exit_code::SUCCESS) {
     return validate_startup_options_exit_code;
   }
@@ -458,8 +460,8 @@
   return command_;
 }
 
-const BlazeStartupOptions& OptionProcessor::GetParsedStartupOptions() const {
-  return *parsed_startup_options_.get();
+StartupOptions* OptionProcessor::GetParsedStartupOptions() const {
+  return parsed_startup_options_.get();
 }
 
 OptionProcessor::~OptionProcessor() {