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.
Add compiler and simd_isa to coffee configuration
Pass COFFEE compiler and simd_isa to PyOP2 init
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.