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.
Move ChangeActionTest.doTest() to VimTestCase.

This method is convenient in other tests as well.
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 - 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
Add tests for w, e motions

Failing tests:
    testWordForwardMotionOnEmptyLineFollowedByEmptyLine
    testTwoWordsForwardMotionOnEmptyLine
    testWordEndForwardMotionOnEmptyLineFollowedByTwoEmptyLines
    testTwoWordEndsForwardMotionOnEmptyLineFollowedByTwoEmptyLines
Fix newline behaviour on b, w, e motions
Add some aw, iw tests.
Overhaul iw, iW, aw, aW motions