DMPlex: Adding support for internal and external facets

Internal and external facets are marked on the sequential Plex
using DMLabels, from which the auxiliary _Facets object can be
derived. The local facet numbering is derived according to Fenics
rules from the Plex topology.
DMPlex: Adding support for boundary IDs

Boundary IDs are applied via the Plex label "boundary_ids" and
mimic the previous gmsh-based unit mesh setups.
DMPlex: Switching most remaining unit meshes to use DMPlex.

Build DMPlex objects from coordinate and cell-to-node mapping for
unit triangle, tetrahedron and interval. Only UnitCircle still requires
Gmsh meshing, but _from_file() now uses DMPlex's Gmsh interface.
DMPlex: Creating IcosahedralSphereMesh from DMPlex

This requires proper dimension handling, where topological and
geometric dim can be different.
DMPlex: Adding plex-based extrusion

For extruded function spaces we use sections that point to stacked
vertical dof columns for each point in the base plex. When building
element->dof mappings we then traverse the closure explicitly and add
the DoFs belonging to the first element in the stack according to
explicit extrusion numbering rules.
DMPlex: Relaxing several convergence tolerances
DMPlex: Adding (limited) support for various mesh formats
DMPlex: Disabling tests that require improved Gmsh support in PETSc
DMPlex: Reordering cells according to Op2 entity types
DMPlex: Reordering facets according to OP2 class