Parallelizer the second

In order to implement some parallelizer tweaks that we'd like to see, having a parallelization mechanism that was easy to understand and tweak is needed. This converts our existing parallelizer and makes two important changes. First, it uses zeromq for the inter-process communication, which takes care of a lot of the headaches related to keeping to processes working in sync. Second, it works by passing lists of test ids to slaves, so we no longer need to rigidly maintain collection ordering across the slaves. This means that it is now trivial to customize how test list generator distributes tests.