Added slightly more sane tab/backspace handling
Sane in behaviour, definitely not sane in implementation