MeshCommunication::gather()

Hey @friedmud, this implements your feature request discussed in #192.  

One question though - are you presently calling MeshCommunication::allgather() directly from MOOSE?  If so, swapping for this should be all you need. If not, then I'm guessing theres a host of optional function parameters that will need to get introduced somewhere such that under the hood the proper method gets called.

Let me know.