Add chain cache

Hi,

I didn't finish with the tests yet, but this PR introduces a chain cache. The use case is when you need to fetch multiple times per request, and that you know in advance there is strong locality, so you benefit from first fetching from fastest to slowest cache.

If you like the idea I'll finish the tests.
Should still respect the interface, even if it is a TODO