Added interior facet + mixed/vector fs test
Use copy par_loop when assigning Function on the same fs
Add shortcut for +=, -=, *=, /= operators on Function

Fall back to PyOP2 Dat arithmetic operators if operand is a scalar
or a Function on the same function space (for += and -= only).
Add clean target to Makefile
Test expression assignment doesn't produce bad values

If we assign to a mixed function from an indexed function, we can't just
put zero in the rhs, since it is not the identity for division and
multiplication.
Insert correct identity value in split expressions

If we're using this expression as the rhs of an assignment by pointwise
multiplication or division, the correct identity value is 1, not 0.
Add Function.sub

Return the ith sub-function of a Function possibly defined on a mixed
function space.
Implement assignment to subfunctions

If the LHS of an assignment is indexed, we know where we want to write
the expression into, so do that.
Use new PyOP2 linear algebra operations
Implement nullspace.orthogonalize
Merge pull request #232 from firedrakeproject/int-facet-mfs-test

Add tests of zero form interior facet integrals on both vector and mixed
function spaces.
DMPlex: Optimise plex_renumbering
DMPlex: Optimising the derivation of cell DoFs
DMPlex: Optimising mark_entity_classes
DMPlex: Optimise facet DoF derivation
DMPlex: Cleaning up PETSc interfaces

Move PETSc definitions into separate include file and add error handling.
Turn assemble_mass_bcs into a 2D test
Run boundary condition tests on vector function spaces
Move final two mesh size loops to dmplex.pyx

Facet marking and coordinate renumbering are now also carried out in
effectively pure C.
Merge pull request #266 from firedrakeproject/test/bcs-on-vfs

Add tests for applying bcs on vector function spaces