Upstream compatibility

The main change is that UFL's `compute_form_data` has been redesigned.  It is now under `ufl/algorithms/`, rather than a method of `Form`.  It is supposed to be called only once, from within FFC, (though I haven't found a way to avoid calling it a couple more times in Firedrake), hence form data is no longer cached.  On the upside, several cheaper methods are available, such as `.arguments()`, `.coefficients()`, etc, which I have tried to use where possible.

I get errors if I try to replace `compute_form_data(form).preprocessed_form.integrals()` by `form.integrals()`, so I assume the preprocessing step is necessary.  I guess we could avoid calling `compute_form_data` and just call the preprocessing steps on the form; let me know what you think.