Reimplement -nextPositionFrom:matchingColumn:returnNotFound: to be O(n)

It used to be O(n^2)

Also improve some other functions now that this one is fast.
Use DVTKit -characterRangeForLineRange/-lineRangeForCharacterRange

Hopefully it has a better complexity than O(length_of_document)
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: in a loop, those
functions are probably in a non O(1) complexitly.

Changing motions in c_v mode should now be in O(selection) instead of
O(selection^2). The performance gain at the end of a relatively large file
is really visible.