Beginning transition frame processing from threads to procs.

We have already been implementing a near MapReduce embarrassingly
parallel restriction, so we might as well go all in. This will
alleviate performance issues related to the global interpreter
lock, which limits thread concurrency.

process_work creates one job per `thread' and assigns them
via a multiprocessing pool.  That job internally loops over
file reads.  If you think of each file read as a MapReduce `map'
job, then thread_work functions primarily as a combiner so
the size of the intermediate results scale with the number of
mappers, not the number of map jobs.