[DO NOT MERGE YET] New PageCache IO API

The pin() and unpin() methods are going away from the public API, and will eventually become internal, I presume.
The idea with the new io() API is that it does not distinguish between only reading a single page, and scanning through a range of pages.
It also features a revised interpretation of the cursor concept, that is more closely aligned with the academic one.
We should aim to do most of our page cache testing through this test template class. It'll come in handy, should we ever want to do other page cache implementations, say, one for enterprise that more efficiently supports configurations where memory capacities and store files are very large.