Ensure upgrade whitespace logic always upgrades current and next step

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.