Create a base CachedDataProvider that reuses lots of the plumbing code f...

...rom OrionDataProvider.  Using this class makes it much easier to create a caching data provider than starting from scratch.