Added tests for the failing scenario

Here are the core test cases for issue #903.
BlockSpan now carries the tab stop

All BlockSpan values now carry the tab stop they were created for.  This
allows them to independently enumerate the SnapshotSpan of every line.
It also provides sufficient information to determine an accurate
CaretPoint and create a selection based off of the BlockSpan value
Progress

- Tests compiling again
- Fixed bug with BlockSpan.ColumnSpaces
- Switched to use tabCount vs passing around IVimLocalSettings
Added overlap point and span data structures

In order to properly handle block selection the code base needs to
represent a partial / overlap SnapshotPoint.  Consider that a tab is
made up of tabstop spaces.  BlockSpan needs to be able to represent a
point which has only a portion of those spaces.  The
SnapshotOverlapPoint and SnapshotOverlapSpan data structures do that.
Increased usage of overlap data

This change begins to plumb the overlap data through the system.  Still
needs to get into some more places but making progress
Delete files that shouldn't be there

Delete files that never should've been added and specifically ignored
them in the .gitignore file
A bit closer
API improvements

Improved the overlap API and the ease of getting span and point values.
More test + API improvements

Removed the HasOverlap API from SnapshotOverlapPoint.  This is a
completely contextual question and simply not possible to answer from
that type alone.  Instead I moved all of the overlap query questions
into SnapshotOverlapSpan where the proper context lies.
All tests passing

All tests are passing again.  Verified and added a regression test to
ensure that #903 is fixed.

There is still more work to do here.  While the block selection code is
paged into my brain I will take care of a few other items.

closes #903
Regression tests for 679

The previous changes I made to block selection tonight also fixed an
existing issue.  Added some unit tests and closing out the bug

closes #679
Simple refactor of type location
Overlap data plumbing

Overlap data now plumbed all the way through EditSpan and Registers.
More operations now properly handle it.  Lots of tests to write though
More unit tests for block selection
Renamed Offset to Column

In an effort to get naming consistent in the APIs I chose to use Column
for position based calculation and Spaces for space based calculation.
This renames the existing Offset methods to Column to reflect this
Code refactoring

Moved the methods on ColumnWiseUtil onto a couple of other types.  Most
of the methods felt more natural on SnapshotLineUtil and
SnapshotPointUtil because they are line and point based queries.
Putting them there makes it easier to remember where to look for them
going forward.

The methods themselves weren't changed.  Just moved them around
Code Refactor

Moved the methods on ColumnWiseUtil onto SnapshotLineUtil,
SnapshotPointUtil and ChartUtil.  The method bodies themselves weren't
changed at all.  However they more naturally fit on these types.  It
will make it easier to find them going forward.
Merge remote-tracking branch 'origin/master' into fixes-block

Conflicts:
	.gitignore