Fix IOOBE when 'i(' motion doesn't find other delimiter

Found by fuzzing.
Fix KeyHandler crash when using '<' or '>'

The '<' and '>' commands weren't marked with FLAG_OP_PEND even though
they should, which sometimes caused EmptyStackException in KeyHandler
(when typing <I<><I<> for example). Found by fuzzing.
Fix AIOOBE crash when using 'b' on first line

If 'b' were used on the first word of the file, and the word was
preceded by whitespace, ArrayIndexOutOfBoundsException would occur.
Found by fuzzing.
Fix AIOOBE when '(' motion goes past start of file

If first character of the file is a newline, then findSentenceEnd()
could return -2 when the 'previous sentence' motion is performed,
leading to an eventual crash. Found by fuzzing.
More useful debug output.
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.

Previously, this was attempted to doby comparing the column number to zero,
but that doesn't work on a multiline '>' action.
FuzzTest is good to go.
VIM-771 Fix semicolon repeat for 'till char' motion

Based on empirical testing with Vim, ';' should work like this:
assuming "<caret>1:a 2:b 3:c" with ':' as the last f/t character:

- "t:" does nothing
- ";"  cursor goes to '2'
- "2;" cursor goes to '2', same as the previous
- "3;" cursor goes to '3'