Auto-detect both if not set, and if GOARCH is not set use GOHOSTARCH.
GOHOSTARCH is used to set the -m32 or -m64 flags for gcc.
This is so that 64-bit can build binaries that run on 32-bit systems.
R=rsc, iant, brainman
CC=golang-dev
https://golang.org/cl/2342045
Specifically, $LIB is set on Windows.
Also diagnose attempt to build GOOS=darwin GOARCH=arm.
Otherwise the build fails mysteriously in package runtime.
Fixes#1065.
R=r
CC=golang-dev
https://golang.org/cl/2162043