WIP: caching layer in the UG (needs testing).  Reads go local disk, and
then the network.  Writes go to local disk asynchronously, and RGs
synchronously or asynchronously depending on O_SYNC flag.  All the
while, stale blocks are asynchronously evicted, enforcing a soft limit
(which starts the eviction thread when exceeded) and a hard limit (which
blocks writes to the cache until there is space).  This replaces the
concept of separate DATA and STAGING directories: a block is "local" if
it is cached, and a file is "local" if this UG is its coordinator.

Still to do (beyond testing):
* reads move blocks up in the LRU queue (how to do this without locking
whole FS?)
* read blocks from cache and network in parallel.
UG cache implementation (needs testing)