Catch and save exceptions and return values from teardown_process.
Catch and save exceptions and return values from teardown_process.

Previously, if a teardown_process hook raised an exception, it would
cause typ to crash. Now, we catch and save any exceptions in the
Runner.final_responses member variable, which is a list of
(worker_num, return_value, exception) tuples, one per process created
over the lifetime of the runner (so worker_num may occur multiple
times).

dpranke/typ