Fix exception handling in Constant.assign
Test mismatched shape assignment to Constant
Make Constant instantiate the appropriate ufl constant

FFC deals specially with ufl Constant, VectorConstant and TensorConstant
objects, so our Constant should really be an instance of the appropriate
type.  To do this, we have to do some __new__ voodoo to set up the
inheritance correctly.
Test more restriction combinations for vector constant
Merge pull request #230 from firedrakeproject/fix/constant_voodoo

Correctly assemble forms with Constants on interior facets.  To do this,
a Constant needs to inherit from the appropriate UFL type depending on
the shape of its value.  We do this with a small amount of Python class
voodoo.
DMPlex: Turn dmplex.py into and extension module with PETSc linkage
DMPlex: Optimising cell closure reordering

We now apply the Fenics renumbering to cell closures via the PETSc
C-interface and store the re-ordered closures with the mesh.
DMPlex: Optimising local facet numbering

Using the reordered cell closures we can derive the local facet
numbering directly without costly sorts and Plex closure calls.