In order to add support for Streaming in Spring Data Repositories we need a bit of infrastructure,
that gives more control over a result than a regular Iterator<T> e.g. being able to
dispose or close an Iterator in order to release the backing resource.
Therefore I propose the following abstractions to be added to Spring Data Commons.
A CloseableIterator which is an Iterator, Closeable and Iterable to serve as
some kind of bridging data structure for the underlying datastore specific results that can be wrapped in a
Java 8 Stream.
For convenient usage in an advanced for-loop we the iterator() method should return this.