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
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
Fix cache dependencies

The form cache was ignoring whether the Functions passed in as
dependencies the second time around were the same as those used in the
cache. This is clearly wrong.
Some closure magic

Change some variable names to stop the parser getting confused by a closure.
Also realise that the matrix retrieved from cache must be copied in place.
Move the assembly cache to the new location.