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
Turn assemble_mass_bcs into a 2D test
Run boundary condition tests on vector function spaces
Merge pull request #266 from firedrakeproject/test/bcs-on-vfs

Add tests for applying bcs on vector function spaces
Add shortcuts for *=, /= by another Function
Add expression tests for *=, /= by another Function
Initial import of assembly cache.

This is an essentially unmodified import of George Boutsioukis' code.
Clean up some logic
Replace obsolete debug function
Attempt to move the cache hook

Since assemble now returns Firedrake objects, we need to cache the
thunk, not the assemble. This doesn't work yet.
Fix cache dependencies

The form cache was ignoring whether the Functions passed in as
dependencies the second time around were the same as those used in the
cache. This is clearly wrong.
Some closure magic

Change some variable names to stop the parser getting confused by a closure.
Also realise that the matrix retrieved from cache must be copied in place.