Fix vim shift insertion point in any mode

When using > or <, vim puts the cursor at the first non blank character of
the first shifted line, just do that.

Adapt tests, in particular add a test to check that undo goes back to the
right position.