Parallel processing with multiprocessing

First, let's implement parallel processing for a multicore machine using the python core library `multiprocessing.`

This is is useful in and of itself, but will also set us up for distributed computing.

Will close #111.