Fix a fat-fingered change: we always need to release our snapshot when the last cursor is closed, even for auto-commit transactions.
Track eviction progress explicitly.  Previously, we gave up if the cache didn't get smaller, but with enough read pressure from application threads, that check was insufficient.