cmd/go: add tracing support

cmd/go part of tracing functionality:
https://docs.google.com/document/u/1/d/1FP5apqzBgr7ahCCgFO-yoVhk4YZrNIDNf9RybngBc14/pub
Full change:
https://codereview.appspot.com/146920043

Change-Id: If346e11b8029c475b01fbf7172ce1c88171fb1b2
Reviewed-on: https://go-review.googlesource.com/1460
Reviewed-by: Russ Cox <rsc@golang.org>
diff --git a/src/cmd/go/doc.go b/src/cmd/go/doc.go
index d0d8a8a..fac6ba8 100644
--- a/src/cmd/go/doc.go
+++ b/src/cmd/go/doc.go
@@ -1059,6 +1059,10 @@
 	-timeout t
 	    If a test runs longer than t, panic.
 
+	-trace trace.out
+	    Write an execution trace to the specified file before exiting.
+	    Writes test binary as -c would.
+
 	-v
 	    Verbose output: log all tests as they are run. Also print all
 	    text from Log and Logf calls even if the test succeeds.
diff --git a/src/cmd/go/test.go b/src/cmd/go/test.go
index c81e406..60f6b16 100644
--- a/src/cmd/go/test.go
+++ b/src/cmd/go/test.go
@@ -206,6 +206,10 @@
 	-timeout t
 	    If a test runs longer than t, panic.
 
+	-trace trace.out
+	    Write an execution trace to the specified file before exiting.
+	    Writes test binary as -c would.
+
 	-v
 	    Verbose output: log all tests as they are run. Also print all
 	    text from Log and Logf calls even if the test succeeds.
diff --git a/src/cmd/go/testflag.go b/src/cmd/go/testflag.go
index 6da74b9..4d73370 100644
--- a/src/cmd/go/testflag.go
+++ b/src/cmd/go/testflag.go
@@ -42,6 +42,7 @@
   -run="": passes -test.run to test
   -short=false: passes -test.short to test
   -timeout=0: passes -test.timeout to test
+  -trace="": passes -test.trace to test
   -v=false: passes -test.v to test
 `
 
@@ -103,6 +104,7 @@
 	{name: "run", passToTest: true},
 	{name: "short", boolVar: new(bool), passToTest: true},
 	{name: "timeout", passToTest: true},
+	{name: "trace", passToTest: true},
 	{name: "v", boolVar: &testV, passToTest: true},
 }
 
@@ -192,7 +194,7 @@
 			testBench = true
 		case "timeout":
 			testTimeout = value
-		case "blockprofile", "cpuprofile", "memprofile":
+		case "blockprofile", "cpuprofile", "memprofile", "trace":
 			testProfile = true
 			testNeedBinary = true
 		case "coverpkg":