No comm world

Don't merge just yet as I need to go through all the apps (which I'll do tomorrow) and make them compatible.

This PR allows MOOSE to build without needing `--enable-default-comm-world` with libMesh.  This also simplifies some of the gymnastics required for MultiApp related stuff to work.

The basic idea was to have `MooseObject` inherit from `libMesh::ParallelObject`.  This means that every object throughout MOOSE now has a `_communicator` member variable and also gains `n_processors()` and `processor_id()`.  This way we can create objects that are working on subset communicators and they will automatically call the correct MPI functions.

refs #2943 #2941