Bring PyOP2 up-to-date with upstream FFC

* Introduces a flatten flag for Args, which instructs the code
  generator to flatten a vector field in the order expected by FFC
  generated kernels i.e. xxxyyy for a 2D vector on triangles when
  staging the data in and out for passing into the kernel.
* Introduces a pyop2_geometry header as the equivalent of the
  ufc_geometry header used by DOLFIN. Since we can't special case the
  coordinate field as is done in FFC (it is assumed to be stored xyxyxy
  as opposed to xxxyyy for other vector fields) the geometry header
  takes care of this transposition.

Note that this does *not* yet work for assembling vector-valued Dats
or Mats. The corresponding tests cases are therefore xfailed.

Depends on mapdes:ffc/pyop2-mixed, so when this goes in,
mapdes:ffc/pyop2-mixed needs to become mapdes:ffc/pyop2.