Fix logfile destination for split compile/link
Report original error message in CompilationError
add mpi4py to install instructions
Add option to run compiler using os.system

On some systems (notably HPC machines) subprocess.check_call can result
in segfaults.  A somewhat safer option is to use os.system instead.  Set
the configuration option "no_fork_available" to True, or the environment
variable PYOP2_NO_FORK_AVAILABLE to 1 to enable this approach when
compiling code at runtime.
Merge pull request #409 from OP2/no-subprocess-call

* no-subprocess-call:
  Add option to run compiler using os.system
  Report original error message in CompilationError
  Fix logfile destination for split compile/link
Merge pull request #410 firedrakeproject/mpi4py-instructions

* mpi4py-instructions:
  add mpi4py to install instructions
Install script: run pip install in /tmp
Add test that modifying Dat changes Vec norm
Ensure Vec context manager bumps object state

The PETSc Vec has a state counter and caches norm computations, since
the Vec is created pointing out our data, we need to bump this state
counter when returning the Vec context so that norms are recomputed.
Merge pull request #412 from OP2/vec-state

* vec-state:
  Ensure Vec context manager bumps object state
  Add test that modifying Dat changes Vec norm
Add mpi4py to install script (pip)

Reported by Suet Lee
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.
Update tests in light of BAIJ changes

We no longer have any access to the matrix data array directly.
Host code gen: fix overallocation of buffer size for dats
Don't build block sparse Sparsities on device backends

The matrix formats we use on device backends don't support block
sparsities, so just pretend we don't have a block structure.
Error on opencl backend for unimplemented Mat behaviour

We drop support for matrices on OpenCL completely.  Tests modified
appropriately to skip tests on device backends where the functionality
is unsupported.
Set block size on Vecs obtained from context manager