libgo/testsuite: kill sleep process in gotest
libgo/testsuite: kill sleep process in gotest

This change modifies the "gotest" shell script
to kill all processes, including "sleep", spawned
by the timeout subshell. This prevents the sleep
process from living beyond the gotest process.

BACKGROUND

The "gotest" shell script spawns "sleep" processes
in the background to kill off test cases that run
past their specified timeout. There are commands
included that appear to kill the sleep process,
but they only kill the parent shell, causing the
sleep process to reparent.

The orphaned sleep process can cause issues when
gotest is run under some build systems, such as
Ninja [0]. The particular issue with Ninja is the
method it uses to identify terminated processes:
it creates a pipe, passes the write end to the
child process, and waits for EOF. In the case of
libgo/gotest, the orphaned sleep process inherits
the pipe FD and keeps it open for 4 minutes by
default.

[0] https://github.com/martine/ninja

Change-Id: I7134c3f0d6f06621d9fcca4f469245017c1da19a
Reviewed-on: https://go-review.googlesource.com/12227
Reviewed-by: Ian Lance Taylor <87e9c6d529889242b7e184afb632328636553ab4@golang.org>

golang/gofrontend,golang/gofrontend,golang/gofrontend,golang/gofrontend,qskycolor/gofrontend,qskycolor/gofrontend,qskycolor/gofrontend,qskycolor/gofrontend,qskycolor/gofrontend,qskycolor/gofrontend,qskycolor/gofrontend