Fix issue where whitespace is not correctly upgraded

Using step iterators ensures the current and next step are always upgraded, even if the next step is more than 2 positions away from the current step.

Additionally, the logic has been corrected to upgrade the character to the LEFT of the step rather than the right. This better matches the intended step position as described in README_cursorpositions.txt.

Fixes issues #514.