Kill the test's entire process group if it times out

This ensures that there aren't any zombie processes, and also that the pipes
receiving messages from the children actually close as expected. Otherwise,
they'd block until the children's children close, which negates the purpose of
the timeout. (Note: you can still circumvent this by making one of the
children join a different process group.)