Add on-disk caching with readahead. The cache will grow to a maximum size and then start recycling blocks. Block allocations are tracked in the leveldb, and cached data is stored in files on disk.

Yeah, it will. We'll probably want some platform-specific code for picking a default location, e.g., ~/Library/Application Support or some such on a mac, a dot-directory on linux, etc.