Fix generated kernel for Expression interpolation

The size of the local tensor should be the product of the Expression's
shape, not its rank.
Raise error if Expression shape does not match Function shape

As well as checking that the rank is correct, we should also check that
the shape is correct.
Add tests of invalid Expression interpolation

We should raise errors if the Expression rank or shape does not match
the function space's rank or shape.
Merge pull request #71 from firedrakeproject/fix-interpolate

Fix interpolation kernel signature: the shape of the array is the shape
of the expression, not the rank of the expression.