Unit test refactor
Block insert + intellisense

This fixes a bug where block insert wasn't functioning when the edit
actions included intellisense.  The initial bug is that the repeat code
just didn't handle the replace logic stored here at all.  Upon closer
examination though the entire way I was repeating block edits was
broken.

After some examination I decided to reduce them to TextChange values.
This type was meant to represent edits at a single point.  I had to fix
some bugs in the application of TextChange values to a buffer but that
was pretty straight forward.

close #1108
Block repeat with partial character edits

This fixes block inserts where the selection extends partially through
characters (in particular tabs).  It will now correctly convert the edit
to spaces before applying the change to the line

issue #964
Refactor VsVimHostTest
Fixed Issue 1122

The C++ go to definition code was incorrectly using vim WORD as the
identifier to pass.  This meant it would include all non-whitespace
characters including ; and ,.  I changed the code to look for C++
identifiers instead
Refactored the normal mode test a bit
Unit test for zero count issue
Fixes issue 1119

This fixes up the incorrect handling of 0 in key maps when the buffer
was in the middle of a count.  It is now properly disabled

close #1119
Simple code hygiene suites

The inconsistent namespaces in the VsVimSharedTest project was bothering
me too much.  I fixed it and added a suite to prevent it from coming
back again
Unit tests for issue 1117

Added some unit tests for #1117.  Was looking this bug today and wanted
to get the regression tests added for it.
Fixed the macro recording issue

Changed the macro recorder to record the KeyInput values which were
typed, not the values which are processed.  The distinction is that
KeyInputProcessed will display the mapped values.  Recording should
capture what was typed
Merge pull request #1127 from jaredpar/fixes-1117

Fixes 1117
Fix caret position in undo of 'cw'

This fixes the caret position in an undo of c{motion}.   The previous
rule for caret position was to go to the start of the last line in the
change.  After some experiments today I modified the rules to be

1. Start of change if motion is character wise
2. Start of second line if motion is line wise

closes #1128
Code Hygiene with discriminated unions

There was a lot of inconsistency with how discriminated unions were
declared in the code base.  I now enforce RequiresQualifiedAccess and
added a unit test to fill out the code coverage for equality functions
Updated readme.txt
Code coverage updates
Merge branch 'master' of https://github.com/jaredpar/VsVim
More code coverage updates
Broke up the function parsing

This change broke up the parsing of function into 2 separate parts.  It
now parses the :func and :endfunc commands as separate LineCommand
values.  ParseSingleLine is dedicated to creating these type of unlinked
LineCommand entries.  ParseSingleCommand will link these commands into a
single LineCommand value.

Next I will make the same change for :if
Moved if parsing to the new model