:bug: ensure all MoveToPrevious{Type} command selects the char under cursor

the root of the problem is that when visual mode (characterwise) is
entered the character under the cursor is not selected. Unfortunately
doing so causes more problems (alot of the commands rely on the cursor
position being before character under the cursor in visual mode). This
commit adds a base class for all the MoveToPrevious{Type} commands which
adds an `ensureCharUnderCursorSelection` to make sure that the
character under the cursor during visual mode is included in the first
`previous` (back) type command.