Restructure to separate mpi from non-mpi

In particular, python-exposed code is now directory disjoint
from code that touches MPI, which facilitates unit tests on
platforms where MPI exists only on compute nodes.