VIM-723 Fix pasting to an empty line

When pasting on an empty line, the pasted text would go to the start of
next line instead.
Add tests for case changing operations

Add tests for the following commands:
- gu, gU, g~ in normal mode
- u, U, ~ in visual mode
Add tests for join actions

Test the following actions in both normal and visual mode: J, gJ
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
DONT PUSH - extra tests for {c,d}{w,W,e,E}
Hacky approach for syncing IntelliJ selection state with internal state.
EMPTY FILE HACK
HACK - don't crash if file doesn't end in newline.
Workaround bunch of crashes when file is empty
Make '>' not add trailing whitespace to empty lines.
'J' shouldn't add whitespace if there is trailing whitespace
Add 'empty file' kludge DONT PUSH