Add basic hierarchies of function spaces

These are basically just bags of function spaces on each level.
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.
Add documentation to multigrid objects