Implement creation of coarse to fine cell_node_maps

On triangles, we can automate the creation of a coarse to fine cell node
map for any nodal basis with a bit of trickery.
Only label facets if mesh is not already distributed

Labelling exterior facets is only possible in serial (where the boundary
of the mesh really is the boundary).  If we're creating a mesh from an
already distributed plex, we don't want to relabel the facets.
Add functionality to filter labels on refined meshes

Plex refinement marks all points "underneath" as a refined entity with
that label.  But we only want marked facets on the refined mesh to carry
labels over, so add ability to remove these labels from other entities.
Add MeshHierarchy and ExtrudedMeshHierarchy

The former takes an existing mesh and refines it uniformly a specified
number of levels.  The latter builds a sequence of extruded meshes on an
existing mesh hierarchy.
Save cell and vertex orientations in mesh hierarchy

This will be necessary when we come to build function space hierarchies.
Add basic hierarchies of function spaces

These are basically just bags of function spaces on each level.
fixup f360e584
Add ability to get restriction and injection weights
Add code constructing PyOP2 kernels for restriction, etc.
Add special-casing for P0 cell_node_map on extruded meshes
Add Function hierarchy
Add grid transfer operators on function space hierarchies

Excepting the P0 case (which is special-cased), we ask FIAT for the dof
weighting and construct appropriate Kernels.
Expose grid transfer operators on function hierarchies
Build mesh hierarchies on non-overlapped meshes

So that the halos don't grow too large, we refine the non-overlapped
mesh and subsequently grow the halos on each level.  This allows us to
build reasonable multigrid hierarchies in parallel.  A consequence is
that we must postpone most of the mesh construction until we know we're
not going to build a mesh hierarchy.  This is transparent to the
user (the setup callback is called when building a function space or
similar).
Add sketch of solving P2 poisson problem with linear GMG
Add sketch of solving P2 poisson problem with FAS
Add FunctionHierarchy.assign
Also support u.assign(0)
NotImplementedError when trying to refine non-triangle mesh
Add tests of multigrid building blocks

These test restriction, prolongation and injection for a range of the
supported spaces.  Restriction is tested by restricting a simple
residual and confirming that this is equivalent to having integrated
that residual on a coarse mesh.  Prolongation is tested by choosing a
function exactly represented on the coarse mesh and ensuring that its
prolongation is equivalent to the same function interpolated onto the
fine mesh.  Injection is tested similarly, but in the opposite
direction.