Second draft of the new page cache IO API

The pin() and unpin() methods are still going away, but the concept of the PageIO consumer
has been dropped. Instead, we access the page through the cursor as a facade, similar to how
things works with plain pin() and unpin().

The next() method *may* stay on the same page, if the page needs to be reprocessed for some
reason. We therefore always have to do our page processing in a while loop or similar. This
will be useful when we try implementing a page cache that uses sequence locks.