Fix facet labelling for refined meshes in parallel

We can't relabel exterior facets when running in parallel, since
process boundary faces will incorrectly be considered exterior.
Instead, filter the refined exterior facet label and just relabel the
interior facets.
Create empty interior facet object with kind "interior"

Previously we used "exterior".
dmplex: add functionality to construct facet numbering

In preparation for providing correct halo information for all Sets
we construct, add ability to build a Section numbering either the
interior or exterior facets.
Rework Halo constructor to use plex and "local" section

The construction of the universal numbering from the plex's default
global section can be wrapped up inside the Halo constructor.  We
therefore just need to pass the plex object and the section (from
createSection) we wish to construct a halo for.
Implement P1 restriction as dual (transpose) of prolongation

Rather than L2-projecting and then using the Riesz map to get the
restricted residual back into the test space, we consider the coarse
basis functions to be linear combinations of the fine space basis
functions.  This gives us slightly better convergence, and as a bonus,
preserves the symmetry of preconditioned operators.