ExpandIterator

Wrapper around existing iterator that returns multiple values, of potentially different type, for each value that input iterator returns.