Reorganized operator implementations.

So that all the constructors are together, all the funtion
operator overloads are together, etc. Makes it more readable.
Restructured MPI files to things build.

Had to split mpi.*pp off into separate files, mutual includes between
simulator.hpp and mpi.hpp, combined with template code for
serialization which HAS to be defined in the header (simulator.hpp),
were causing major headaches. Now, simulator.hpp includes
mpi_operators.hpp, but mpi_operators.hpp no longer has to include
simulator.hpp. The part of mpi.hpp which necessitated the inclusion
of simulator.hpp was split off into mpi_simulator.hpp.

Also added first pass at worker.cpp, which will build to a separate
executable that will run on the remote nodes.  That part currently
doesn't compile.