First round of cleanup. Just leave the old implementation for reference.
More cleaning: now use a static pool of workers created at module import,
and put options common to the serial and parallel implementations in
a shared list.