Stop catching SystemExit from subprocesses

This is tricky, but realistically the parent should be the one handling exit conditions.
Catching SystemExit swallows any intentional exit code from the child processes,
and also causes stop to be called twice in some instances. Also, there are multiple
reports of KeyboardInterrupt+multiprocessing bugs, and the guidance is to never
catch KeyboardInterrupt from child processes - let the parent process be the only
one that might catch this, and clean up properly. I don't want to make such a big change
in this pull request, so I'm leaving a note that this really needs to be changed to the
parent process catching exceptions and calling stop if needed.

[ci skip]