cmd/go: When linking with gccgo pass .a files in the order they are discovered

Under some circumstances linking a test binary with gccgo can fail, because
the installed version of the library ends up before the version built for the
test on the linker command line.

This admittedly slightly hackish fix fixes this by putting the library archives
on the linker command line in the order that a pre-order depth first traversal
of the dependencies gives them, which has the side effect of always putting the
version of the library built for the test first.

Fixes issue 6768

This is the patch from https://codereview.appspot.com/28050043/
cmd/go: test: do not put object files where later steps will find them

When recompiling a package whose basename is the name of a standard
package for testing with gccgo, a .o file with the basename of the
package being tested was being placed in the _test/ directory where the
compilation of the test binary then found it when looking for the
standard library package.

This change puts the object files in a separate directory.

Fixes issue 6793

This is the patch from https://codereview.appspot.com/27650045/