cmd/go: remove work directory on usage error

Backport https://golang.org/cl/163237 from the master library:

    Ensure that cmd/go consistently calls base.Exit rather than os.Exit,
    so that we don't incorrectly leave the work directory around on exit.

    Test this by modifying the testsuite to run all the tests with TMPDIR
    set to a temporary directory, and then check that no files are left
    behind in that temporary directory. Adjust a couple of tests to make
    this approach work.

Updates https://gcc.gnu.org/PR89406

Change-Id: I8794b7b2f1346e7af84f3300ef420d4c9d0b5fb2
Reviewed-on: https://go-review.googlesource.com/c/163198
Reviewed-by: Than McIntosh <thanm@google.com>
10 files changed