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.
Apply the patch in issue #149 correctly.

The line new_vtk << function in io.py
was meant to be replaced by
new_vtk << (function, self._time_step).
Add support for extruded facet integrals
Tidy existing tests, and un-xfail
Laplace and Poisson tests for facets, using Neumann BCs
Add interior facet stress tests (P0 and P1DG steady advection)