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.
Merge pull request #239 from firedrakeproject/fix/map_cache

Minor fixes for new PyOP2 caching model.