Move Cached base class to caching module, add cache_key property
Add DiskCached base class to persist cache on disk
Cache FFC kernels on disk so we save recompiling the form
Add unit tests for FFCKernel caching on disk
Merge pull request #177 from OP2/form-caching

FFC Form caching

Cache FFC forms on disk to save recompiling when we reuse a form. Note
that unlike DOLFIN we only cache the generated code i.e. the PyOP2
Kernel object. This is because the JIT-compiled `ParLoop` objects are
backend-specific and already cached via `JITModule`.

The `Cached` base class is moved to its own `caching` module and another
base class `DiskCached` derived from it, which in addition to caching in
memory also persists the cache on disk.

Also fixes a bug in the previous caching of forms, where the `form_data`
object was reused from cache, which meant the arguments passed to the
`par_loop` were always those of the time the form was assembled for the
first time.