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.