Add pyop2_geometry.h and include in FFC-generated kernels

With FFC revision 668e316, 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 triggers a unused-variable warning.
Vertex coordinates are now flattened, but we need them as double**
Do not assume transposed vectors when computing Jacobian
Bump version to 0.3.0
Optional argument flatten for Arg constructor and Dat call

Optional, defaults to False. Used to instruct the wrapper code
generator to treat the data dimensions of an Arg as flat s.t. the
kernel is passed a flat vector of length map.arity * data.dataset.cdim.
Implement generation of flattened kernel arguments

Only for host code generator.
Staged vector data per component for flattened Arg

FFC kernels access data per spatial dimension first and then per
basis function. This is the order we need to stage data in for vector
valued Dats (there is no difference for scalar Dats).
Implement flattening of Mat Args
Flatten vector Args in all FFC demos
Mark mass_vector_ffc regression tests as failing
Implement flattened Arg support for CUDA
Implement flattened Arg support for OpenCL
Implement flattened vector declaration for OpenMP