Fix SNES option setting

We need to pass flag options with value None to petsc4py otherwise the
value is converted into a string and used as an output file name. So
convert options where the type of the value is boolean to None if True
and empty if False.
Update linear solver option setting in line with PyOP2 change

We now just take a dict mapping PETSc options to values.
Update gitignore
Overload ufl.adjoint and explicitly pass firedrake.Arguments

Required, otherwise ufl.adjoint returns ufl.Arguments.
Merge pull request #25 from firedrakeproject/ufl_adjoint

Override adjoint so that it returns the correct Argument type.
Merge pull request #19 from  firedrakeproject/set-snes-options
Merge pull request #21 from firedrakeproject/linear-solver-parameters

Expose API for setting linear solver parameters in solve.  Uses PETSc
options names.
Fix Mesh creation when there are no interior facets

Single element meshes (such as the unit triangle and unit
tetrahedron) have no interior facets.  Unfortunately, we can't build a
memoryview on a C array of zero length, so guard against this case and
build an empty _Facets object instead.
Test interior facet integrals on single element mesh

A single element mesh has no interior facets, so assembling a form over
the appropriate measure should give zero.
Fix generation of circle meshes

Previously we were extruding the circle twice, resulting in a mesh with
twice the area we actually want.
Add tests of mesh generation

Check that building a mesh and assembling the measure over it gives the
appropriate "volume" of the mesh.
Merge pull request #18 from firedrakeproject/test-meshes

Test mesh creation:
* Fix Mesh creation when there are no interior facets
* Test interior facet integrals on single element mesh
* Add tests of mesh generation
Add project utility function
Add convergence tests of projection functionality

We check that an expression projected into CG1-3 and DG0-2 spaces
converges at the right order.
Merge pull request #22 from firedrakeproject/projection

Introduce project utility function and add convergence tests for
projection functionality.
Add make lint target running flake8
Convert assemble test to pytest
Convert expressions test to pytest
Convert extrusion_assemble_p0 test to pytest
Convert extrusion_assembly test to pytest