Utility class for caching data
Very useful in the case where retrieving or building data sets is expensive, and the data  doesn't change during the lifetime of the request.  This class serves as a hash table where  any data class can store and retrieve cached data.