Fix docstring of clear_cache
Return early if not rank 0 when ensuring cache dir
Broadcast md5 of firedrake_geometry.h from rank zero

Again, no need to touch the disk on every process.
Silence ffc output except on rank zero
Merge pull request #249 from firedrakeproject/origin/fix/disk_cache

Remove incidences of all processes writing or reading from disk cache.
Declare kernel argument of correct size for interpolating on VFSes

The local tensor is space_dimension * dim (which is 1 for function spaces).
Default to conjugate gradient Krylov method when projecting

The system is SPD so don't explicitly set the KSP type to CG (rather
than the default GMRES).
Don't overwrite user solver_parameters dict

For mixed problems, we set the default pc_type to jacobi by calling
setdefault on the provided parameters dict.  If the user passed one in,
this modifies it in place.  So take a copy for ourselves before changing
it.
Test that carrying out multiple projections is reproducible

    x = project(foo, V)
    y = project(bar, Q)
    z = project(foo, V)

Should result in x and z having identical values.
Merge pull request #252 from firedrakeproject/projection_fix

- Fix declaration of kernel parameter for expression interpolation onto
  vector function spaces.
- Don't stomp on user's parameters dict in solve.
- Switch to using conjugate gradient when projecting.
DMPlex: Turn dmplex.py into extension module with PETSc linkage
DMPlex: Optimising cell closure reordering

We now apply the Fenics renumbering to cell closures via the PETSc
C-interface and store the re-ordered closures for all cells with
the mesh. This ensures that we perform the minimum of costly Plex
closure calls, because all other numberings (eg. facets) can be
derived from the reordered closures.
DMPlex: Optimising local facet numbering

Using the reordered cell closures we can derive the local facet
numbering directly without costly sorts and Plex closure calls.
DMPlex: Compute facet numbering only once

We now defer the facet numbering computation until the first
FunctionSpace intialisation and forced by building a simple FS.
The created interior and exterior facet numberings are then stored
with the mesh and reused whenever we build other FunctionSpace.
DMPlex: Generate OP2-ordered cell and facet lists with C loops