Golang dev null problem

This is the essence of the RFC in https://github.com/flycheck/flycheck/pull/237. The following was done:
 - Moved tests for golang into the required package structure.
 - Added a test to verify subpackages can be found (GOPATH must be set properly). This test fails because of the output problem, too.
 - Added setter for GOPATH environment variable. Tries to take travis and vagrant into account.
 - Added fix for go build output problem. Building the temporary file required a separate temporary-filename method not creating an actual file. make-temp-name shouldn't be used, but I guess this is the only way to handle this.