CDK-121: Updating DatasetReader interfaces.

This adds Iterable<E>, Iterator<E>, and Closeable to DatasetReader. The
implementations now use a static inner Base class that has default remove and
iterator implementations, as well as updates to transition from read() to
next(). See the discussion in JIRA CDK-121.