[bidi support] Overhaul algorithm to deal with corner case

When a level 2 section intersected with a level 0 one, an
assumption in the visual motion code was violated, resulting
in bogus motion and thus infinite loops in the charCoords code.
[vim keymap] Add Ctrl-o/Ctrl-i jumplist motions