Use an empty tuple as key if passed in no bcs
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