[vim] visual block basic

This is a basic patch to demostrate visual block mode implementation.
Do not touch `doc.sel`. You should never change any state stored under `doc` or `cm` except `cm.vimState`. Can you work around this?