REVIEW-2082: Doc fix
REVIEW-2061: Switched internals of up-to-date checking to be iterator-based instead of listener-based
- TaskStateChanges extends Iterable<TaskStateChange>
   - Caching is done by wrapping implementation for input files and output files
   - Other implementations are based on non-streaming collections of changes
- FileCollectionSnapshot.changesSince(Snapshot,Listener) is now FileCollectionSnapshot.iterateChangesSince(Snapshot) >> ChangeIterator