Make client-provided options an rc source

The client provides information about whether the terminal is a tty, and
which width the output should be formatted for. Passing this information
as explicit command-line arguments has the disadvantage that it overrides
any setting in configuration files. While usually there is no one-size-fits-all
value for terminal width, it doesn't make sense either to have an option
where the user cannot set a default. Fix this by providing the client options
as least imported rc-source.

This is a roll-forward of commit 044adedc70de040475443e52eb1a3c692159790e

--
MOS_MIGRATED_REVID=120338148
diff --git a/src/main/cpp/option_processor.cc b/src/main/cpp/option_processor.cc
index 0696b5a..3e2f662 100644
--- a/src/main/cpp/option_processor.cc
+++ b/src/main/cpp/option_processor.cc
@@ -424,6 +424,14 @@
 // the command and the arguments. NB: Keep the options added here in sync with
 // BlazeCommandDispatcher.INTERNAL_COMMAND_OPTIONS!
 void OptionProcessor::AddRcfileArgsAndOptions(bool batch, const string& cwd) {
+  // Provide terminal options as coming from the least important rc file.
+  command_arguments_.push_back("--rc_source=client");
+  command_arguments_.push_back("--default_override=0:common=--isatty=" +
+                               ToString(IsStandardTerminal()));
+  command_arguments_.push_back(
+      "--default_override=0:common=--terminal_columns=" +
+      ToString(GetTerminalColumns()));
+
   // Push the options mapping .blazerc numbers to filenames.
   for (int i_blazerc = 0; i_blazerc < blazercs_.size(); i_blazerc++) {
     const RcFile* blazerc = blazercs_[i_blazerc];
@@ -442,17 +450,11 @@
     for (int ii = 0; ii < it->second.size(); ii++) {
       const RcOption& rcoption = it->second[ii];
       command_arguments_.push_back(
-          "--default_override=" + ToString(rcoption.rcfile_index()) + ":"
+          "--default_override=" + ToString(rcoption.rcfile_index() + 1) + ":"
           + it->first + "=" + rcoption.option());
     }
   }
 
-  // Splice the terminal options.
-  command_arguments_.push_back(
-      "--isatty=" + ToString(IsStandardTerminal()));
-  command_arguments_.push_back(
-      "--terminal_columns=" + ToString(GetTerminalColumns()));
-
   // Pass the client environment to the server in server mode.
   if (batch) {
     command_arguments_.push_back("--ignore_client_env");