Test suite robustness

Ensure clean up occurs on panic.

Cleanup and terminate on interrupt.

Note: GardenRunner.Stop and .TearDown should be idempotent, even if
they aren’t yet.
GardenRunner support for premature process termination

If garden has already terminated when we attempt to interrupt it,
do not treat this as an error and proceed to check that garden
really has terminated.

The two cases referred to in the code are discussed here:

https://groups.google.com/forum/#!searchin/golang-nuts/Process.signal$20behaviour/golang-nuts/2Zmut0tcnPE/wIsFGWmWz1MJ