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
Build vector space for mixed basis from components

It's convenient to specify the individual pieces.  If we pass a function
space in to the mixed basis constructor we can build the space we need
to project out of monolithic mixed operators.
Pass list of ISes into nullspace._apply

We need these so we can compose the nullspace with the appropriate IS
for projecting it out when using Schur complements.
Simplify mixed nullspace test

Also test that not applying the nullspace in the Schur complement case
fails to converge.
ExpressionSplitter: Simplify assignment to indexed LHS

If the LHS is indexed, only build scalar operands i.e. tuples of
length one and not the full size of the parent function space.
Merge pull request #264 from firedrakeproject/more-nullspace

Compose nullspaces correctly for use in Schur complements.

For mixed problems, when passed a MixedVectorSpaceBasis, we hang the
monolithic nullspace on the matrix, and compose the individual
components with the ISes defining the split.