Extract common concept for retrieving text content associated with a step
Re-align downgrade whitespace logic to match upgrade whitespace

Downgrade whitespace now follows the same logic as upgrade, and will
downgrade a whitespace element just to the left of the step, and to the
left of the next step to the right.

Using step iterators instead of position iterators also fixes some failing
operation tests by ensuring one step to the right is checked irrespective
of how many positions there are between steps.
Merge pull request #570 from peitschie/downgrade-fix

Re-align downgrade whitespace logic to match upgrade whitespace