Added ability to init a cached property from a default object or allow passing in a func to initialize the cache entry.