First draft of a new IO API for the PageCache.

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.