Moved StepIterator into core and standardised terminology to not assume cursor positions
Make StepIterator 100% typed