iterator: Add `IteratorUtil::chain_map` method

chain_map produces an iterator that maps each element to an iterator,
and yields the elements of the produced iterators.

This is the monadic bind :: M a -> (a -> M b) -> M b  for iterators.

To flatten an iterator of iterators, use chain_map with the identity
function.