Cache fiat element on ufl element.

This trivial change causes fiat_from_ufl_element to drop from 5s to
nothing on the wave demo.
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
WeakKeyDict cache implementation

It turns out that some FiniteElements have __slots__ set. This uses a
weak key dictionary to implement a non-leaking cache instead of
caching FIAT elements directly on the UFL ones.
Merge pull request #231 from firedrakeproject/fiat_element_cache

Cache fiat element lookup.
Use an empty tuple as key if passed in no bcs
Docs: fix broken contributing link on contact page
Allow passing single DirichletBC when solving linear system
Use PyOP2 object caching for function spaces

Rather than reimplementing the same scheme, just let FunctionSpaceBase
inherit from ObjectCached.
Only try and delete petsc options if set up

If we get an error building a NonlinearVariationalSolver object before
we've set the options prefix, then we should not try and look at it in
__del__.
Merge pull request #239 from firedrakeproject/fix/map_cache

Minor fixes for new PyOP2 caching model.
Add requirements file
Travis: install from local requirements.txt
Docs: add installation instructions for FFC, FIAT, UFL
Merge pull request #238 from firedrakeproject/requirements

Require FFC, FIAT, UFL as dependencies
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.
Added interior facet + mixed/vector fs test
tweak test tolerances