Make '>' not add trailing whitespace to empty lines.
'J' shouldn't add whitespace if there is trailing whitespace
Add some missing key names.
Optimize character case changing operations

Previously, performing e.g. visual '~' on a large file would completely
lock up the IDE. The culprit seemed to be the calls to replaceText() one
character at a time, which is not a cheap operation since each
replaceText() will for example trigger a DocumentChanged event.
Add tests for case changing operations

Add tests for the following commands:
- gu, gU, g~ in normal mode
- u, U, ~ in visual mode
Add unit tests for Ex ranges

Adds tests for ranges in Ex commands. Almost every kind of range has
basic tests, except the following are still totally untested:
    - \/, \?, \&
    - register ranges
    - syntax errors in ranges
Add testcase for '>' in visual block mode
Add unit tests for some replace commands

Adds tests for: |r|, |s|, |R|, and <Ins> in insert mode.
Add tests for change number operations (<C-A>, <C-X>)
Add few simple mark tests.
DONT PUSH - extra tests for {c,d}{w,W,e,E}
DONT PUSH - Hacky approach for syncing IntelliJ selection state with internal state.
Revert "DONT PUSH - Hacky approach for syncing IntelliJ selection state with internal state."

This reverts commit 27df98619d203ec767937fb73eefa29ae577eaac.
DONT PUSH - workaround empty files
DONT PUSH - don't crash if file doesn't end in newline.
DONT PUSH - Workaround bunch of crashes when file is empty
DONT PUSH - Add 'empty file' kludge
DONT PUSH - prevent fuzzer from crashing on some visual actions
DONT PUSH - empty document workarounds
DONT PUSH: lame attempt at speedups