Revert unnecessary changes to AdjustCaretForVirtualEdit
Fix cut in select mode to actually cut, not just delete
Add support for switching between visual and select modes using Ctrl+G

- Added command infrastructure to select mode
- Added cut, copy and paste normal commands
- Added visual command to switch to the other visual mode
- Added Ctrl+G bindings to both visual and select mode
Fix text input being discarded
Make cut, copy and paste visual commands
Fix scroll commands in select mode
Move keys that initiate select mode to the command factory
Fix trailing whitespace and add remove unneeded Swap member function