Pull COFFEE out of PyOP2
Adapt to COFFEE's new naming convention
Update requirements and reflect them in setup.py
Update installation instructions
Update the location of the COFFEE repo
Auto-install COFFEE with quick installation
Update required numpy version
Fix cow_shallow_copy for MixedDats

Need to call the shallow copy operation on the individual Dats.
Add support for "local" par_loops

If we pass the flag only_local=True to a par_loop it will only compute
over owned set entities (even in the case of indirect loops).  Once the
computation has finished, Dats accessed via INC perform a halo exchange
to /gather/ remote increments into their local data.

Such loops only make sense if none of the Args are Mats and if Dats are
only ever accessed as either INC or READ, errors are raised in other
cases.
Set: maintain sizes as a single tuple

Rather than having a different slot for each of core, non_core, exec and
non-exec Set sizes, just use the tuple we were passed in and index
appropriately in the public properties.
Introduce new LocalSet type

A LocalSet wraps a Set and indicates that iteration should only occur
over owned set elements.  A par_loop iterating over such a set carries
out a reverse halo exchange at the end of computation to ensure that all
INC Args are up to date.
Allow par_loops on LocalSets to have WRITE Args

The user guarantees that the write from either "side" would have been
identical anyway, so we can assume that the local write was complete and
correct, and there's no need to force a halo exchange.
Support LocalSets built on ExtrudedSets
Cache LocalSets on Set
Merge pull request #391 from firedrakeproject/local-par_loop

* local-par_loop:
  Cache LocalSets on Set
  Support LocalSets built on ExtrudedSets
  Allow par_loops on LocalSets to have WRITE Args
  Introduce new LocalSet type
  Set: maintain sizes as a single tuple
  Add support for "local" par_loops
Remove remaining pyop2.coffee imports
Merge pull request #406 from OP2/remove-coffee

* remove-coffee:
  Remove remaining pyop2.coffee imports
  Update required numpy version
  Auto-install COFFEE with quick installation
  Update the location of the COFFEE repo
  Update installation instructions
  Update requirements and reflect them in setup.py
  Adapt to COFFEE's new naming convention
  Pull COFFEE out of PyOP2
Bump version to 0.12.0
Use BAIJ matrices where possible

When building a matrix where rdim == cdim > 1, we now use
block-sparse (BAIJ) matrices.  This reduces the size of the sparsity
pattern we compute by a factor of rdim*cdim and allows for more
efficient matrix storage and insertion.  As a consequence, we no longer
create sequential matrices with arrays (these are not supported for
PETSc BAIJ matrices).  The parallel and sequential code therefore
becomes more closely aligned.
Fix block shuffle index for BLAS transformations

In this case, the kernel accepts a 1d array, rather than a 2d one, so
index appropriately.