add IteratorSplitter and supporting classes SplitDefinition and SplitResult - all tested