DMPlex: Optimise plex_renumbering
DMPlex: Optimising the derivation of cell DoFs
DMPlex: Optimising mark_entity_classes
DMPlex: Optimise facet DoF derivation
DMPlex: Cleaning up PETSc interfaces

Move PETSc definitions into separate include file and add error handling.
Move final two mesh size loops to dmplex.pyx

Facet marking and coordinate renumbering are now also carried out in
effectively pure C.
PetscMalloc1/PetscFree take void pointers
Unroll entity dofs into C pointers

Removes final python calls from inner loop.
Only restore closures if we got one

We get the transitive closure of an entity inside a loop, but restore it
outside.  So we should only do so if the loop trip count is greater than zero.
Merge pull request #265 from firedrakeproject/plex-optimisation-pt2

Optimise remaining loops related to DMPlex migration by utilising the
PETSc C interfaces.  Mesh generation now good for largish meshes.