Rework CG prolongation/restriction

Use new PyOP2 LocalSets to only iterate over owned cells in restriction
and prolongation.  Additionally, only build maps including owned cells.
This is in preparation for parallel MG when we will be shrinking the
halos of refined grids.
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.