Update incremental search fix

It turns out the incremental search operation sets a flag on the
IVsUIDataSource associated with the IVsFindManager instance.  We can
query that for incremental search on /off.  This is much better than
reflection.
Code consistency fix
Refactor the testing logic
Made incremental cancellable

This still needs to be reworked a bit though.  Even though it can be
cancelled previous sessions can still control search by using the
previously returned BindData.  Need to cut that off completely so that
once cancelled the data is completely separate
Cancel is now complete

Previous sessions can no longer interfere with newer ones
Fix caching mix in directive parsing

The directive parsing code was never using its cache.  The value type
was different between the store and load operations causing it to miss
every time.  Switched to a named key to prevent future confusion and
added a unit test

closes #1366
Merge remote-tracking branch 'origin/master' into fixes-1364
Cancel incremental search on mode change

closes #1364
Fixed a test failure

The incremental search change took a dependency on a new VS service
(SVsFindManager).  The memory leak test wasn't properly updated to
export this dependency and hence the tests started failing
Merge remote-tracking branch 'origin/master' into fixes-1364
Merge pull request #1370 from jaredpar/fixes-1364

Fixes 1364
Added the softtabstop setting
First round of tab settings tests

Many more to come.  So far focused on those which don't involve 'sts'
Completed the initial 'softtabstop' tests
Completed insert portion of 'softtabstop'

The insert portion is now complete and passing the designed tests.  May
want to add some more tests later but want to switch focus to getting
the delete portion working.  Once both are working I will begin
dogfooding the changes and author more tests around the feature
Changed GetBackspacingPoint to provide more data

Previously the GetBackspacingPoint function would return simply the
point to which a backspace operation should delete.  In order to
implement 'softabstop' this function needs to provide more information.
A backspace with 'softtabstop' is very possibly a delete + an insert
operation.  Classic case is the following

1. Settings ts=8, sts=4, noet
2. Go to a blank line in insert mode and type <Tab><Tab>.  This will
result in a single \t character being inserted into the file
3. Type <BS> and the result will be 4 spaces on the line.

In that case 'sts' overrides 'noexpandtab' and splits the tab.  The only
logical way to represent this is as a replace operation.

This change simply updates the API to allow for the possibility of the
replace.  I wanted to separate out this change to make sure it didn't
interfere with the existing tests around 'backspace'
'sts' and backspace now working

The interaction between backspace and 'sts' is now working for the key
scenarios.

This change though did break the interaction with backspacing over the
start.  I need to rework that interaction interaction between InsertMode
and InsertUtil (in particular how it affects repeat and delete which
crosses start).  Temporarily disabled the tests.  Next check-in will be
re-enabling them and fixing the interaction
Minor test reorg
Couple more unit tests
Couple more unit tests

Experimentally found some more interesting cases around typing 'sts' and
'backspace'.  In particular

- typing <Space> will disable 'sts' for the current line edit
- typing <CR> does not change the start point of an edit