Replace Iterator implementations with IteratorAggregate and ArrayIterator

We could eliminate a chunk of code by implementing the IteratorAggregate interface and using the internal ArrayIterator class as opposed to implementing a custom iterator. This pull request implements the suggestion without changing any functionality. In other words, you can still iterate over an Elastica\ResultSet instance to get the results.