DMPlex: Always build a vertex numbering

Since this calls the collective types.FunctionSpace() it should not
be done inside any conditionals.
DMPlex: Loop over all ranks when building Halo

We need to loop over all ranks when exchanging `remote_sends` in order
to avoid hanging if we have empty partitions.
Merge pull request #219 from firedrakeproject/fix/empty-partitions

Fixes to avoid hanging if we have empty partitions in parallel.