Stash computed form on tensor for re-assembly

When passing in a tensor to assemble, stash the form and computed
kernels on the tensor such that if we reassemble the same form on
the same tensor we save having to preprocess/split the form again.
Add test assembling different forms into the same Function
Add test assembling different forms into the same Matrix
Fix path in demos Makefile
Fix gitignore for new path structure
Adapt to changes in PyOP2 matrix assembly

The Mat user must now call assemble explicitly to ensure the matrix is
built before using it.
Allow exterior facet integrals in parallel
Set up fieldsplit ISes correctly for parallel running

Numbering of fields on process N is offset by the sum of the rows of the
big matrix on processes 0, ..., N-1 (inclusive).
Add fieldsplit solving test for mixed Poisson (no bcs)
Add fieldsplit test for mixed Poisson with bcs
Merge pull request #244 from firedrakeproject/stash-computed-form-on-tensor

Stash computed form on tensor for re-assembly
Test mixed poisson problem in parallel

Use both normal gmres+jacobi solve and fieldsplit solve.
Merge pull request #242 from firedrakeproject//matrix_assemble

Adapt to changes in PyOP2 matrix assembly.  After queuing up par_loops
to assemble matrices, we must explicitly call matrix.assemble()

Additionally, remove restriction on assembling exterior facets in
parallel and add parallel fieldsplit support (tested with mixed poisson
problem in parallel)
Stash compiled kernels on the form to save recompiling
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 #240 from firedrakeproject/mixed-poisson-fieldsplit

Add more tests of fieldsplit solves for mixed poisson.
Lint fix