Belt and braces programming :P.

I've deliberately hung a communicator on the halo so as to make it easy to transition to a state where the halo communicator isn't the world communicator.  E.g. neighbourhood communicators in MPI-3.  But I suspect that a bunch of things might break if the halos don't match up.  Hence the assertion and comment.