Reorg cache API and make a formal config option

This reworks the cache API to define, formally, both an in-memory
cache handler and a no-op cache handler.

This will be used in reworking how data is cached in Dassets. The
goal is to rework caching so that asset files are cached when
accessed using `Dassets[]`.  To accomplish this caching needs to
only happen at the source proxy level and the memoization at the
source file and asset file levels needs to be turned off.

In order to keep it so that in development you don't have to reload
and clear cache, I need to make caching not only centralized at the
source proxy level, but I need to make it a formal option that can
be config'd by the user.

@jcredding ready for review.