More stuff for the common jar

strictly speaking, you can't for-each loop over an Iterator - it must be an Iterable. The reason I choose Iterator instead of Iterable is because in Java 8, it would be more convenient to work with the responses as Stream objects, which aren't Iterable. Both Iterable and Stream can be backed by an underlying Iterator, so I opted to make it the client code's job of wrapping the Iterator as an Iterable or as a Stream depending upon which version of Java they are running.

* i'm not sure what you mean - Pager is an abstract class with a single abstract method fetchAll() - it doesn't have any setters.
* yes, i'll add the default retry policies
* yes, I can make the changes to flatten the two levels of objects into a single level.