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
Set default SIMD ISA to SSE to be safe
Merge pull request #306 from firedrakeproject/fix/issue_256

Catch FFC EmptyIntegrandError and don't use resulting kernel
Merge pull request #305 from firedrakeproject/fix/parallel_mixed_assembly_cache

* origin/fix/parallel_mixed_assembly_cache:
  Check cache size as well as values
  assembly_cache: Ensure copied matrix is assembled
  Add more tests of assembly cache correctness
  Build VFS of correct dim in errornorm
Time execution of DirichletBC.apply
Time setting boundary matrix diagonal entries to 1
Time assembly of cells and interior/exterior facets