custom iterator for rep_each instead of using SugarIterator
rename tools to iterators as this only contains iterators
move SugarIterator in its own file
rename SugarIterator -> indexing_iterator which is clearer. also rename TransformIterator to transform_iterator which is more consistent with other iterators