cmd/go: many bug fixes

* Reject import paths of the form cmd/x/y.
* Reject 'go install' of command outside GOPATH
* Clearer error rejecting 'go install' of package outside GOPATH.
* Name temporary binary for first file in 'go run' list or for test.
* Provide a way to pass -ldflags arguments with spaces.
* Pass all Go files (even +build ignored ones) to go fix, go fmt, go vet.
* Reject 'go run foo_test.go'.
* Silence 'exit 1' prints from 'go tool' invocations.
* Make go test -xxxprofile leave binary behind for analysis.
* Reject ~ in GOPATH except on Windows.
* Get a little less confused by symlinks.
* Document that go test x y z runs three test binaries.
* Fix go test -timeout=0.
* Add -tags flag to 'go list'.
* Use pkg/gccgo_$GOOS_$GOARCH for gccgo output.

Fixes issue 3389.
Fixes issue 3500.
Fixes issue 3503.
Fixes issue 3760.
Fixes issue 3941.
Fixes issue 4007.
Fixes issue 4032.
Fixes issue 4074.
Fixes issue 4127.
Fixes issue 4140.
Fixes issue 4311.
Fixes issue 4568.
Fixes issue 4576.
Fixes issue 4702.

R=adg
CC=golang-dev
https://codereview.appspot.com/7225074