Migrate FFC interface from PyOP2
Add compatible FFC version
First stab at a FormSplitter
Sum integrands on the same measure before splitting a form
Reconstruct Indexed and IndexSum for non fixed indices
Check for MixedFunctionSpace when splitting Argument/Coefficient
Don't return a tuple if a Sum only has one block
Fix condition for reconstructing index_sum
Split forms when building FFCKernel

Does not work with disk caching for now since Coefficients can't be
serialised.
Use split forms when assembling

Adapt to changes in compile_form, which now returns a four-tuple of
index, domain type, coefficients and kernel.

We now need to pull apart the tensor and test and trial functions if
it is a mixed type and extract the component for the block the kernel
contributes to and filter the boundary conditions to only include
those defined on the current block.
Split the form in compile_form

FFCKernel goes back to handling only a single kernel on a single
integral.
Handle grad in FormSplitter
Simplify FormSplitter using splitting by construction

Instead of making one pass over the form and getting back a list of
subforms on the blocks of the mixed space, make as many passes as
there are blocks in the mixed space and only enabling one component of
each Argument at a time.

When splitting an Argument, create a UFL ListTensor where only the
component of the MixedFunctionSpace selected by the current block
index is included and all other components are set to Zero. These
Zeros are subsequently eliminated as they are used in expressions and
not propagated up the form tree.
FormSplitter: don't split coefficients
Only sum integrands if they are on the same domain
Only call FormSplitter if we have a mixed form
Kernels tuple returned by ffc_interface contains Measure
Access integrals via preprocessed form

When building integral_data for the form_data object, the domain_data
which Firedrake uses to carry the coordinate field is stripped. We
therefore need to get the integrals with intact integral_data via the
preprocessed form.
Extract coord field from measure in assemble thunk
Add firedrake-clean script to remove cached FFC kernels