Reimplemented the iterator concatenator.

No longer accesses an iterator unless all previously added ones have
been exhausted. No recurses on a tree (could trigger a stack overflow
exception).