cache file now works by balancing heaps

It balances a min-heap for the memory cache with a max-heap on the disk
cache.  basically it implements the LFU algorithm and always attempts to
keep hot blocks in memory and leave cold blocks on disk.

Signed-off-by: Tim Henderson <tim.tadh@gmail.com>