vim: add support for toggle case (~)

You can use this individually on the current character or on selections.
It will try to leave the cursor after the operation in the same place that
VIM does which is under the insert cursor in the case of a selection or
after the cursor in the case of no selection.