Subject: Go 1.10

From: Leo Famulari <[email-masked]>
Date: Thu, 22 Feb 2018 13:25:03 -0500

This patch adds Go 1.10 but leaves Go 1.9 as the default Go.

Go 1.10 changes the way that Go decides whether to re-use built objects
or to recompile them [0]. Reading the release notes, it seems to
implement something like a memoized cache for built objects and test
results.

Go 1.10 works with our go-build-system, but the built objects are not
re-used. Instead, either most or all required objects are rebuilt, so
the build system will need some adjustment.

I think it's useful to have this new version of Go packaged, especially
if somebody wants to decipher how the new compiler decides when to
re-use the built objects :)

Also, there is a data race found in the test suite when bootstrapping
with GCC 5, so this patch changes the entire Go stack to GCC 6. I'll
send a report upstream.

[0] The "build cache" is mentioned in the link below. The mechanism is
called "content-based staleness" in some places.
https://golang.org/doc/go1.10#build