Revamp Cache structure

Add MultiLevel and SplitSize types.

MultiLevel has multiple caches behind it and checks them in order.
SplitSize also has multiple caches bheind it, and stores objects
of certain size ranges in different caches.

MemoryCache no longer has built-in next-level support. Use
MultiLevel for this instead.
Merge branch 'master' of github.com:dimfeld/simpleblog