Let git generate better diffs for obj-c
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.
Implement $ in c_v mode.

Fixes: #522

At the same time, I rewrote -xvim_selectedRanges ^V mode so that it
doesn't use -lineNumber: and -positionAtLineNumber:column:, those
functions are in O(n) complexity of the file length and should be avoided
at all costs. Changing motions in c_v mode should not be in O(selection)
instead of O(selection^2). The performance gain at the end of a relatively
large file is really visible.
Use DVTKit -characterRangeForLineRange/-lineRangeForCharacterRange

Hopefully it has a better complexity than O(length_of_document)