Implement Constant

Add a version of Constant (with data carried by a PyOP2 Global) that
behaves like an appropriate Coefficient to UFL and an appropriate
Function to Firedrake's assemble calls.

Effectively we build a FiniteElement, VectorElement, or TensorElement
for UFL and fake up enough Function methods that assembly needs no
changes to pass Constants in to the par_loop.
Change check for cell orientation flag to skip over Real elements
Add some tests of Constant
Add section on Constant in manual
Fix linking in manual sections
Add ufl_element method to Constant
Fix formatting of type error in expression assembly
Support Constants in expression assembly

We just need to tell the type checking about them.
Broadcast scalar Constants when assembling expressions

Allow assembly of a scalar constant multiplying a vector function.
Add some tests of Constant in expressions
Allow constant to be built before meshes

We need to call _init to ensure PyOP2 is initialised.
Raise error on augmented assignment for constants
Merge pull request #31 from firedrakeproject/feature/constant

Implement Constant.  A Constant can be used in a variational form in the
same way as a Function and in an assembled expression (as long as there
is an assignment to a Function).
Fix missing doc link to module.
Initial import of assembly cache.

This is an essentially unmodified import of George Boutsioukis' code.
delint
Clean up some logic
Replace obsolete debug function
Attempt to move the cache hook

Since assemble now returns Firedrake objects, we need to cache the
thunk, not the assemble. This doesn't work yet.
Fecking lint