Extract `replay` from `readLeaf.

Extracting the `replay` method at first created `replay` method with far
too many parameters, a lot of state shared between the closures in
`readLeaf`. I decided to forgo the preservation of the buffer, so that
`readLeaf` allocates buffers for the footer and the position array, then
and `replay` allocates it's own buffers to read in the log entries.

Within `readLeaf`, a best effort was made to share buffers, to read
beyond the positions entry so long as we were reading, and to use a
buffer containing the positions entry and however many log entries to
get things started. Instead, `readLeaf` reads just what it needs to, and
greedy reading begins in `replay`.

We're moving this because branch pages are going to contain a subset of
the leaf page entries; insert and delete entries. We're going to load a
branch page by replaying the insert and delete entries. Unlike leaf page
log, branch page logs will have no positions entry way points. Playback
will always begin from the beginning. Thus, we need to extract the
`replay` function so that we can call it directly from `readBranch`.

Closes #179.