Refactor NSTextView(VimOperation) into the XVimView

This is a huge refactor that makes the code more independant, more
efficient, and acting on XVimView's and XVimBuffer's as much as possible.

In particular, this commit tries not to use any NSTextView methods to
modify the content, which has several important side effects:
- it's more efficient, since we don't go through all the XCode logic to
  handle edits (it's really a waste when we're doing block operationst
  typically), performance for several operations is visibly faster than it
  used to be;
- it's better for the user as this goes below XCode AutoCompletion code,
  and doesn't pop up spurious dialogs when you're in command mode anymore;
- this goes through our Undo logic which allows exact coalescing and
  cursor placement, instead of relying on the Appkit doing the right thing
  before. (and it doesn't for insertion, but we'll get to that at some
  point).

This commit also does tons of cleanups with the selection and movement,
notably fixing behavior when MOTION_END_OF_LINE ($) is used, as this
should be preserved, and wasn't

Note that for now XVimView is still XCode dependant, because I didn't
write a category to swizzle XCode classes, and didn't write a protocol
for the TextView yet. Such a protocol will include anything that is
rendering related, like placeholder handling. Indenting should go to the
NSTextStorage instead, as it's strictly content related.

I wouldn't be surprised there are a couple of regression, crashers, but
the test-suite passes, and I'm living on that patch now.
Force synthesizing properties

I had a bug because it's not on by default in XVim and a property was
automatically synthesized because I didn't implement the selector and had
no warning.