Add pyop2_geometry.h and include in FFC-generated kernels

With FFC revision 1840, the UFC geometry computations (Jacobian and
its determinant and inverse) are not part of the generated kernel any
more but outsourced to a header file ufc_geometry.h. FFC generated
code for UFC targets is meant to include this header file.

We have our own version of this header file, pyop2_geometry.h, which
defines the functions from ufc_geometry.h as preprocessor macros. This
is necessary to get around the pass-by-reference semantics used for the
determinant in the generated kernels. It also saves us from having to
annotate all these functions with the correct classifiers for CUDA and
OpenCL.

Unfortnately we can no longer compile kernels with -Werror because FFC
kernels compute the Jacobian inverse regardless of whether it is later
used or not. This trigger the unused-variable warning.
Vertex coordinates are now flattened, but we need them as double**
Do not assume transposed vectors when computing Jacobian
First stab at building a block sparsity.
Update mass_vector_ffc demo
Working block matrix version. Building one sparsity instead of four.
Created the sparse blocks into a list.
Code generation for mat and rhs, about to do the assembly.
VecNests, Solver included. First attempt at a mixed space is working.
Fixed RHS. Packed coefficients. Flattened Vec Maps. Switched loops.
Add mass_vector_ffc_real demo
Pass the right iteration space index to the kernel
Need to allow lists in Sparsity constructor type checks
Zero local tensor before passing to local assembly kernel
Block sparsity by components of the field
Add base.MultiDat and check for instance instead of _name attribute
Add zero and _dim to MultiDat
Give MultiDat and MultiMap an __iter__ iterating of the list of components
Refactor ParLoop argument checking
Correctly declare OpenMP vectors