A trait for internal iterators. An internal iterator differs from a normal iterator in that its
iteration is controlled internally by the iterator itself, instead of externally by the calling
code. This means that instead of returning a single item on each call to next, internal
iterators call a closure for each item on a single call to for_each. This allows internal
operators to be implemented recursively, something that is not possible with normal iterators.