thoughts:
1) lazy or bust.
2) I think a type like:
```scala
trait FStream[+T] {
  def head: Future[T]
  def tail: FStream[T]
}
```
is what we want (I think a StreamT monad transformer on Future is what is happening here, I think scalaz has this). I thought this was basically Spool.

3) If you have Iterable[Future[T]] you can do. .toList.size which implies you can get the size without waiting, which is false. We don't know the cardinality of the keys without an Await.

4) I think we should stay concrete while we abstract: what will we implement? I would like to use this paging to handle things like a ReadableStore[K, FStream[V]] where K is a user, and V are the followers: since some users have millions of followers, we can't assume we can fit the response in on unpaged value. What other use cases do people have?