Fix adding nested Parameters dicts
Add Parameters dict for COFFEE configuration
Use COFFE configuration when building FFC kernel
Make COFFEE parameters part of FFCKernel cache key

Note that this causes unnecessary repeated calls to FFC when actually
only the kernel code needs to be regenerated and recompiled.
Use parameters.add for sub parameter sets
Check if kernels stashed on form match optimisations

We stash the compiled kernels on the form so we don't have to recompile
if we assemble the same form again with the same optimisations. If the
optimisations have changed we do want to regenerate the kernels.
Move facet labelling before distribution

Unintended consequence of reordering change.  Facet labelling must be
before distribution, otherwise some interior facets will be considered
exterior.
Add compiler and simd_isa to coffee configuration
Pass COFFEE compiler and simd_isa to PyOP2 init
remove use of as_form (removed from UFL)
Merge pull request #304 from firedrakeproject/upstream_compat

remove use of as_form (removed from UFL)
Maintain global list of unique markers on exterior facets

When running in parallel, not all processes will have exterior facets
with all boundary markers.  Therefore, determining the unique list of
marker values from local facet markers is unsafe.  Instead, build
exterior facet objects with a list of global "unique" markers that are
guaranteed the same on all processes.  This is available as the
unique_markers property on a _Facets object.

Furthermore, move all facet building into one place.  Even if the local
process has no facets of a given type, it must still participate in this
marker determination.
Merge pull request #302 from firedrakeproject/fix/parallel_ext_facets

* fix/parallel_ext_facets:
  Maintain global list of unique markers on exterior facets
  Move facet labelling before distribution
Use RuntimeError not error in form conversion
Merge pull request #297 from firedrakeproject/coffee-config

Add configuration of COFFEE AST optimisations
Catch FFC EmptyIntegrandError and don't use resulting kernel

It's just computing zero, so don't bother putting it in the list of
kernels to execute.
Build VFS of correct dim in errornorm
Add more tests of assembly cache correctness

Effectively this is turning the assembly cache bug reports into tests.
assembly_cache: Ensure copied matrix is assembled
Check cache size as well as values