[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.
It was moved into updateRecord during refactorings, so no behaviour has changed. I should move it back, though, because this is after all a better place for it.