always use null for missing backtracks
rename a variable #cosmetic #squish
implement furthest-backtrack error messages

this is a port of #3.