PROV-1070 First cut at facilities for external caching

I really don’t like how the return values of Zend\Cache vary from
adapter to adapter and don’t always match the documentation. The
Filesystem Adapter in particular seems very hacky, and it can’t store
arrays and objects by default so we have to do our own serialization.
We might want to use something other than Zend\Cache after all.