Add test of tensor-valued Constant

Slightly better test coverage by checking behaviour from #364.
Add some (failing) tests of non-trivial extruded offset calculations

In particular, test the offsets computed for exterior facet boundary
node maps.
Add some (failing) parallel offset computations
Fix offset computation for exterior facet boundary map

Rather than building the offset by considering the global dofs in the
first entry of the exterior facet boundary node map and the cell to node
map (which was not guaranteed to coincide anyway), just index the offset
by the dofs FIAT has told us are on the boundary.  This not only
produces the correct offsets, but is robust to running in parallel where
a process may not own any dofs on the boundary (in which case indexing
the map would not work).
Only assemble jacobian once if solver is linear

If we're linear, we know we don't need to reassemble the jacobian when
repeatedly call solve on the same LinearVariationalSolver object, so
don't.
Merge pull request #385 from firedrakeproject/fix-extrusion-bcs

* fix-extrusion-bcs:
  Fix offset computation for exterior facet boundary map
  Add some (failing) parallel offset computations
  Add some (failing) tests of non-trivial extruded offset calculations
Revert "Only assemble jacobian once if solver is linear"

This reverts commit 7af14feb8b52324e42d69034964348a535b7bb49.

Despite being linear, the Jacobian may depend on varying coefficients,
so it is not safe to assume that the previously assembled value is
correct.
Fix links to grants on funding page
Plex: Fix `facets` allocation and free `vertices` correctly
Merge pull request #389 from firedrakeproject/plex-mem-fixes

* plex-mem-fixes:
  Plex: Fix `facets` allocation and free `vertices` correctly
Store permutation from new to original cell numbering

We need this to back out the correct coarse to fine cell maps in a mesh
hierarchy.
Add optional distribute flag to mesh creation

If distribute is False, the mesh is already distributed and we should
not do so again.
Ensure meshes always have name
Add multigrid module

Contains basic Mesh, FunctionSpace and Function hierarchies that are
containers for a bag of nested meshes and associated function spaces and
functions.
Use DMPlex refinement to build refined sphere mesh

Rather than walking cell by cell in python, let PETSc refine the base
icosahedron and then fix up the coordinates in one go using a numpy
splat.
Add restriction and prolongation methods to FunctionHierarchy

Only implemented for DG0 for now.
Add reorder argument to MeshHierarchy
Pass geometric dimension to Mesh constructor when refining

The plex doesn't know this information, so explicitly provide it.
Stash a vertex numbering on the mesh
Build unique cell_node_maps for coarse cells to fine nodes

We build a map from each coarse cell to the fine degrees of freedom one
the fine cells the coarse cell spans.  Since the meshes are nested,
these come out in a predictable order each time, such that we can write
kernels that map between the two simply.