[wip] Mark-and-limit pagination and storage

I'm expanding the pagination work started in #200 to include the marker-and-limit pagination scheme, with the intention of expanding the existing storage implementation to use it.
So `countPage` is a means to find out the count of a page as its being traversed over by `EachPage`, right? Two ideas:

1. Could we standardize the name of the extract function to `Extract` and add it to the interface, effectively forcing end-users to implement the function themselves? I don't know if you can do that in Golang (leave an interface partially defined so that implementors have to fill in the pieces).
2. If that's not possible, could we reduce the footprint of `countPage` closure by asking it as an argument to `EachPage` only? I can't find any more usages apart from that function, so do we need to define it as a required func on the `Pager` struct?