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.

As the size of this directory is about to become much larger, it will become more important to allow it's location to be specified (rather than hard coding /tmp, as fuse_gdrive.go now does).