Treat flattened Args that use iteration spaces correctly

We need to modify the extent of the iteration space for a flattened arg,
and change the matrix assembly code slightly to account for it. These
changes are necessary to allow assembly over vector function spaces in
Firedrake.
Fix vector function space assembly on the host

Adapt map indexing for the data layout expected for flattened kernels
as those generated by FFC: We need to pass in the x component for all
DOFs first, then the y component and so on.
xfail mass_vector_ffc test only for cuda/opencl
Attempt vector fs assembly for CUDA, needs fixing