Make XVimBuffer a reality

This object will now be the main entry point to manipulate the content of
the textStorage, so that we don't have to extend the NSTextStorage with
categories.

XVimBuffer is now created each time we learn about a new Document that
responds to -textStorage which XCode documents do.

XVimBuffer also knows about the undo manager, and is used to be the target
of the specific vim action we mean to undo, which means that undoing the
cursor positions won't crash anymore (Layout managers and textviews come
and go, and it's not correct to make them the target of an undo
operation).
Migrate most of XVimTextStoring to XVimBuffer

XVimTextStoring becomes a protocol that you implement when you intend to
give better alternatives than the default implementations from XVimBuffer.

This commit doesn't alter code, it merely moves some around, and adpt
callers.