Decorators for caching the values of functions and methods
