Add a MPI only mode so distarray programs can be run without IPython.parallel.

*This is not ready to merge*

The interface:

* write a program using Distarray, call it `prog.py`. But instead of using `Context` use `MPIConetxt`.
* Then you can run the program with as many engines as you want, using `mpiexec -n 1 python prog.py: -n <n engins> engine.py`.

You cannot run `prog.py` interactively, only with mpiexec. We should merge `Context` and `MPIContext` so the same program can be run in either mode.

The implementation:
I copied the `Context` class and re-implemented the parts that used IPython (`push, pull, apply, ...`). I then added a module called `engine.py` which runs a loop waiting for messages from rank 0. It reads these messages and acts on them. So now the program being run acts as the client, it is rank 0. It is an intercomm with engines as the other group.

Todo: 
* Make the test suite agnostic of IPython
* refactor new additions and rebase for commit clarity
* fix whatever bugs come up when running the test suite with mpi-only mode
* Unify contetx classes so the same code can be run with MPI-only or with IPython too

*Most* of the time we use delete when we are done running a distarray program, not because we want to clean up while still running. Since we can only run one program before everything is cleaned up with MPI context's, we don't need this *most* of the time. I think I started implementing it, but was having problems, so I punted.