Support yank/paste with tabs

This goes through getting rid of the bogus uses of xvim_selectedRanges,
this is only ever legal to use it when talking to DVTKit or when we're
doing something that isn't bogus when there are tabs in the selected
ranges.

The remaining users are:
- xvim_swapCase, xvim_makeLowerCase, xvim_makeUpperCase ok because tabs
  aren't touched
- xvim_syncState which is talking to DVTKit

I dropped xvim_selectedRangesAsSeparatedLines because it's just a recipe
for disaster.

Yanking and replacing a block with the yank buffer has been rewritten
significantly for block based selection, and mostly untouched but
refactored for other selection modes.

I've tested this using the visual-examples text from vim's visual.txt
help, trying several selections involving tabs, selecting to end of line
and so forth.