when backspacing, needs to keep modified line status

if the current line is modified and backspace is used to combine the
line with the previous 'blank' line, the modified line needs to follow
the current line (in other words decremented)

only if the previous line is not empty, should the modified line be
reset, which will be set once the backspace is processed and the cursor
is moved to the previous line (when the previous line is blank, the
ignore change flag is used)
moved backspace code into its own function