Refactored cache system. lots of backwards-incompatible changes. cache key generation is now available via classmethods (for generating keys using raw data) and as instance properties on objects