Fix plan to colour matrices built on multiple map pairs

Previously the plan assumed that matrices would only be built on a
single pair of maps.  To fix this, determine the map to colour by
inspecting the matrix Arg, rather than looking directly at the first
rowmap in the Sparsity.
Fix race condition in extrusion for OpenMP backend

The implicit extruded maps we build are private to each thread, however
we were previously building them as shared.
Make Arg iterable
Implement splitting of matrix Args
Override _data property on MixedDat to return tuple
Iterate over mixed arguments when building unwound args list
Split mixed Dat/Mat arguments when passing to kernel wrapper
Enable mixed unit tests for matrices and indirect loops
Eliminate duplicate code path when building unwound args