Add support for the Json trace file format

Add a --experimental_generate_json_trace_profile option that puts a file into
the output base (or uses --profile if set).

There are still a lot of problems with this.
- unexplained holes
- way too many threads
- nonsensical event titles
- too many detail events, too little overview
- it may also cause unnecessary load
- it silently overwrites the existing file on subsequent invocations

The format is documented here: goo.gl/oMZPLh

PiperOrigin-RevId: 200259431
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommonCommandOptions.java b/src/main/java/com/google/devtools/build/lib/runtime/CommonCommandOptions.java
index 6e9ba86..923ebe6 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/CommonCommandOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/CommonCommandOptions.java
@@ -194,6 +194,17 @@
   public String buildRequestId;
 
   @Option(
+    name = "experimental_generate_json_trace_profile",
+    defaultValue = "false",
+    documentationCategory = OptionDocumentationCategory.LOGGING,
+    effectTags = {OptionEffectTag.AFFECTS_OUTPUTS, OptionEffectTag.BAZEL_MONITORING},
+    help =
+        "If enabled, Bazel profiles the build and writes a JSON-format profile into a file in the "
+            + "output base."
+  )
+  public boolean enableTracer;
+
+  @Option(
     name = "profile",
     defaultValue = "null",
     documentationCategory = OptionDocumentationCategory.LOGGING,