Add pagination to secondary indexes, commit the first.

This introduces the IndexPage class, which is necessary both to wrap
the results into a sensible API, and to provide consistency between
single-roundtrip and streaming options. The IndexPage class can appear
as if it were a list, is iterable for streaming and regular iteration
purposes. Regardless of whether pagination is used, an IndexPage will
be returned (thanks to the quirkiness of Python's generators).

This leaves equality/return-terms dangling, to be addressed in the
next commit. Sending an equality query with the return-terms flag on
does not result in pairs being returned, but simply keys. Obviously,
the client knows what the index term is and so can inject it into the
result (which is what we will do for consistency).
Add pagination to secondary indexes, commit the second.

This refactors a bit of the IndexPage class so as to support the
equality/return-terms issue left dangling in the last commit. Along
the way, I added a test for streaming with the eq/rt combo, and
discovered an issue where the PBC interface returned the `keys` field
from the response directly when it was expected to be a list. This
wouldn't normally be an issue, but was necessitated by the eq/rt
issue.

This completes the work for #252.