Visual improvements

Here is a pull request that does tremendous progress on the visual front, to clean up code, and stuff like that.

It closes #522 and #523, in includes performance improvements (dramatical ones), vim compatibility improvements and more.

I havent written tests for most of it though, because the tests aren't really ready for that kind of testing, as you can't test for block ranges, which is what was mostly improved.