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).
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)
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.