This change:
- renames TestFormatter.process_event() to TestFormatter.handle_event()
- does away with TestFormatter.begin_session()/end_session(), replacing them with new initialize and terminate events. Now everything goes through handle_event().
- passes the worker count (thread/process count) in the initialize event.
- really adds the inferior dotest.py pid to all test events. Looks like I lost that at some point as it was only coming in on the inferior process begin/end messages.
- names the inferior process begin/end messages to job_begin and job_end.
- fixes some ugly output and invalid handling when Ctrl-C happened with my previous change (grabbing the worker index would blow up when we were tearing down the multiprocessing.Manager when accessing its shared proxy dictionary.)