Move cache lookup code to a pluggable backend

ETagCacheLookup is the first example implementation.