Unblock global to PETSc numbering in parallel case

We currently build the correct global to PETSc numbering maps for
block matrices, but can only assemble into non-block matrices.  So as a
quick fix for assembling on vector function spaces in parallel, use
PETSc routines to build the appropriate unblocked maps.
Fix Mat._is_scalar_field for mixed x Non-mixed case

If one of datasets in a Mat is mixed and the other isn't, the dims
property is something like (x, (y, z)).  So calling np.prod when
determining if the Mat represents as scalar field fails.  Check for
scalar-ness by checking that np.prod of every entry in the tuple is 1
instead.
Merge pull request #273 from OP2/parallel-vfs

Unblock global to PETSc numbering in parallel case.

We currently build the correct global to PETSc numbering maps for
block matrices, but can only assemble into non-block matrices. So as a
quick fix for assembling on vector function spaces in parallel, use
PETSc routines to build the appropriate unblocked maps.
Merge pull request #274 from OP2/is-scalar-field

Fix Mat._is_scalar_field for mixed x Non-mixed case

If one of datasets in a Mat is mixed and the other isn't, the dims
property is something like (x, (y, z)). So calling np.prod when
determining if the Mat represents as scalar field fails. Check for
scalar-ness by checking that np.prod of every entry in the tuple is 1
instead.
Fix the offsets to be applied to the flattened map.
Add new Jacobian computation for extruded element.
Modify rhs assembly to increment extruded maps correctly.
Add extruded map flattening and the appropriate offset increments.
Use non-flattened when assembling the LHS.
Add flattened and non-flattened case switching.
Fix extruded map dimension for flattened and non-flattened cases.
Fix offset application for flattened and non-flattened cases.
Change sparsity to use rmult and cmult. Fix matrix assembly for the flattened case.
Extruded mixed spaces fixes.
Fix the non-Mixed Map code generation for extruded map init and increment.
Add functionality for Mixed Function Spaces.
Correctly assemble the RHS block-wise.
Fix offset addition for mixed spaces.
Rewrite add_offset_map code generator.
Rewrite add_offset_map_flatten.