Add method cache decorator

Splits CacheView into CacheView and CacheMixin that can then be used for method decorator