Make Css NavigateTo cancellable

The previous implementation of CSS INavigateTo wasn't cancellable.  This
meant user searches with non-trivial names were doing a lot of
unnecessary work.  Pretty much every character typed into the search box
results in a call to StopSearch followed by StartSearch with the new
search value.  The previous implementation wasn't cancelling searches in
StopSearch and hence a lot of unnecessary work was being done on
projects with big individual files or simply a large number of CSS
files.  This change makes the search fully cancellable and removes the
unnecessary work.

It also fixes one small bug.  In the case where we didn't want to search
at all (the search string didn't start with # or .) then we still need
to call INavigateToCallback.Done.