Override default petsc4py error handler

We /really/ don't want PETSc errors to be silent, so install an error
handler that calls MPI_Abort if an error occurs.
Activate extruded interior facet integrals in parallel

Now that the sparsity is built correctly in MPI, we can remove the
restriction that interior facet integrals are not allowed on extruded
meshes.
Add parallel extruded 2D advection tests

This just takes the existing serial tests and runs them in parallel
too.  Tests interior facet integrals in parallel on extruded meshes.
Update assembly cache tests to PyOP2 changes
Merge pull request #369 from firedrakeproject/mat-zeros

* mat-zeros:
  Update assembly cache tests to PyOP2 changes
  Add parallel extruded 2D advection tests
  Activate extruded interior facet integrals in parallel
  Override default petsc4py error handler
Travis: fix install order
Add test that empty exterior facet set works
Create empty arrays for facet lists rather than None

It is possible that some processes do not own any exterior facets when
running in parallel.  In this case we should still arrange that the type
of the exterior_facet_node_list matches.  To whit, create an empty array
of the appropriate data type, rather than using None.
Merge pull request #373 from firedrakeproject/fix-empty-facet-list

Fix empty facet list
CSS for hints
Allow specification of output coords when extruding coordinate field

Rather than always using the coordinate field in the extruded mesh,
allow the user to specify the field to write to.
Allow vfamily to be DG1 when extruding coordinates
Support hedgehog extrusion: extrusion_type="radial_hedgehog"

Allow extrusion of circle and sphere meshes into a "hedgehog-like"
P1dgxP1 coordinate field where the coordinates are extruded radially
outward in the direction of the outward cell normal.  For output
purposes (and Jacobian calculations), a normal "radially" extruded P1
coordinate field is computed simultaneously and made available in the
mesh.radial_coordinates property.
update publications
parloops: pass kwargs on to op2 Kernel constructor

This allows specifying keyword arguments in a Firedrake par_loop to
e.g. define custome headers or user code to be included in the kernel.
parloops: add support for components of mixed functions
parloops: add tests for components of mixed functions

The indirect loops test fails, but I couldn't figure out why.
parloops: add failing tests for full mixed functions
Constant mangling

UFL now no longer supplies separate types for Constant, VectorConstant
and TensorConstant.
ufl.Expr now lives in ufl.core.expr.Expr