vim: keep insert mark before character when selecting a single char

This makes things like jumping between matches easier (such as with %).
Otherwise, when you jump back to the original position, the insert mark
would be after the selected char causing the character under the cursor
to be different.
vim: use helper for selecting a range instead of moving marks

This will allow us to catch some corner cases like re-selecting a single
character upon a movement.
vim: use select_range helper to keep insert mark on proper character