Codegeneration - Pointer types need to unparse_post of the base type to avoid losing extents of arrays
Correct types of kernel parameters
Add iteration space indices to OP2 local matrix kernels.
Update identity example to match parameters and remove loop nests handled by the iteration space
No subscripts on the local tensor for the OP2 matrix case.
Don't initialise the local tensor for the OP2 matrix case.
Code generation: don't insert null expressions into scopes.
Code generation: raise exception if requested depth is greater than loop nest depth
Don't build loops over local tensor indices for matrices in OP2. Messy, but works.
[minor] remove rogue space from expected output
Build local tensor initialiser inside buildLocalTensor so that we don't have a messy special case of buildLocalTensorInitialiser for Op2FormBackend
Tidy up the code used in the generation of the local tensor loop nests.
Correct indexing of local tensor in op2 identity expected output
Correct index generation for local tensors in op2
New index type for basis fns in the quad loop.

The QuadratureBasisIndex class is similar to the BasisIndex class,
except that it produces the name q_r_x in the generated code
rather than i_r_0. This is necessary because the scope of basis
function indices in OP2 matrix assembly kernels is the entire
kernel - this would have caused a clash between the names.
Although the scoping rules would have allowed the "right" version
of the index to be used at all times, it would have been confusing
to have two variables with the same name in different scopes in
the kernel.
Use BasisIndex names for OP2 Matrix assembly kernel iteration space variables
Update OP2 Identity expected output to match recent changes.
Update OP2 expected outputs to match current code generation.
Merge pull request #64 from gmarkall/op2-iteration-space

Generate kernels that conform to the OP2 iteration space specification

Summary of the changes:

* OP2 Matrix assembly kernels don't contain loops over the basis
  functions anymore - instead, the basis function indices are passed as
  parameters after all the other parameters.

* OP2 Matrix assembly kernels don't contain statements to zero the
  local tensor.

* The loops over basis functions in the quadrature loop have been
  renamed. Instead of calling these indices i_r_*, they are now called
  q_r_* - this is because the scope of the basis function indices in the
  OP2 matrix assembly kernels is now the entire kernel, rather than
  being constrained to loops inside the kernel. Although the scoping
  rules would always have allowed the correct index value to be used, it
  seemed confusing to have the same index name in two scopes that were
  nested.  The quadrature loop basis indices are represented by the
  QuadratureBasisIndex class.

* Expected outputs updated to match the new code generation.

* Minor changes in the code generation backend to save generating
  expressions like ; when NullExpressions are part of the AST, a
  bugfix when unparsing pointers to arrays, and better feedback in the
  (now unused) getScopeFromNest() function. Note that NullExpressions
  aren't actually inserted into the AST in this merge, although this was
  true at one point in some of the earlier commits to this branch.

These tests have passed on the devtests-grm08 queues on the buildbot.
Additionally, I tried substituting the mass kernel generated by MCFC
into the mass2d example from Lawrence's OP2-Common repository. When com
piled against the sequential library, and executed with $ ./mass2d_seq
-mat_view, the matrix produced i s plausibly similar to the one produced
by the original mass2d example, although there seems to be a diff erence
in the numbering of DOFs between Fluidity and the mass2d example. See:

https://github.com/gmarkall/OP2-Common/blob/f19a8f318df907b99cc4be83fdddd73690af8970/apps/c/mass2d/mass.h

for the example that I tested with.