Just write the mesh files for unit tets and triangles

Since gmsh seems to be incapable of meshing a triangle into a single
triangle (version dependent), just build the mesh file directly, rather
than writing a geo and then meshing it.
Add internal facet integral test for unit tet
Create the Jacobian in the right place.

Move the automatic differentiation of the residual from solve to the NonlinearVariationalProblem constructor. This means that the Jacobian is still created if a user directly instantiates a NonlinearVariationalProblem. If the user passes a Jacobian, this is still honoured.
Add facet maps to Arguments

Our subclasses of ufl.Argument need to know about facet maps. This commit adds them.
Pass the Jacobian through.

If the user provides a Jacobian, we are not allowed to forget it!
Add test assembling 1-form over facets
Add (failing) test assembling bilinear forms on facets
Build correct Sparsity for mixed measure forms

Previously, we assumed that bilinear forms would only assemble over
cells and hard-coded the Sparsity pattern to be the outer product of
the test and trial spaces' cell_node_maps.  For either pure facet
integrals, or mixed cell and facet integrals, this is the wrong thing
to do.  Instead, loop over the integrals in the form and construct the
appropriate map pairings to pass into Sparsity construction.
Merge pull request #59 from firedrakeproject/assemble-facet-integrals

Wire facet maps into Arguments.
Merge pull request #67 from firedrakeproject/fix-jacobian-derivation

Build the jacobian in NonlinearVariationalProblem rather than solve if
the user did not provide it.
Merge pull request #69 from firedrakeproject/correct-mat-sparsity

Build the correct matrix sparsity when the form contains something other
than cell integrals.
Accept Function not Dat in _la_solve

Additionally, document arguments better.
Add Matrix class

A thin wrapper around a PyOP2 Mat that remembers the bilinear form it
was assembled from.
Use Matrix not Mat for assembled bilinear forms
Apply boundary conditions correctly in _la_solve case

Now that the assembled bilinear form remembers where it came from, we
can correctly apply strong boundary conditions.
Add test of preassembled solve with boundary conditions
Implement lazy bilinear form assembly

When pre-assembling systems that contain boundary conditions it is legal
to do:

    A = assemble(a)
    for bc in bcs: bc.apply(A)
    solve(A, ...)

However, the way we apply boundary conditions to the bilinear form
requires that they are available when we assemble it.  To support the
above, we need to postpone assembling the form until the solve
call (when any boundary conditions must be known).

To do this, when assembling a bilinear form we now return an unassembled
Matrix object, with a assembly callback stashed on it.  When we need it,
we must now call Matrix.assemble().  If the Matrix has already been
assembled, this is a no-op.
Add more tests of preassembled Matrix boundary conditions
Make Matrix.M property force assembly

If we're looking at the op2.Mat through the public property, we probably
want some values in it, so force the assembly of the Matrix.
DTRT if a preassembled Matrix is reused with different bcs

If we preassemble a Matrix and then use it with some set of boundary
conditions, if we later reuse it with different boundary conditions,
force reassembly with the new boundary conditions.  This way, we get the
speed of preassembled things with the DWIMness of just using forms
everywhere.