feat(IndexedDBCache): add support for caching responses with IndexedDB

WORK IN PROGRESS --- TESTS STILL NEEDED

I'm still working on how this should all fit together. The testing strategy is a bit complicated, but
this seems to work fairly well for the time being.