ProcessLoop abstraction for running procs in parallel

Currently there are a few unimplemented features, but it
works well enough on OS X.