supervisor: tests enforce timeouts

The timeout flag to go test doesn't work the way I thought it did (it's not per-test, but for all tests), so now the supervisor tests explicitly timeout previously blocking operations.

The test cases are a bit more laborious to write/read, but this does have the advantage that the panic messages convey the expected behavior. Seems like an acceptable tradeoff.

/cc @peterbourgon @jmyounker