A javascript prototype extention that provides a function with the ability to cache its returned result based on its inputs