[vim] Fixes to greedy regex search

A bit nervous about this change. Repeatedly introduced infinite loops in the code while I was tweaking it. I think I worked them all out and the unit tests have OK coverage.

In searchcursor.js:

- Makes "backtracking" matches match forward search matches.
- Fixes "0 or more" `\w*` type searches

For "0 or more" type searches, any character will now produce a match, since it can technically match the empty string.

In vim.js:

- Greedy regex searches will no longer match submatches. i.e. for query of `\w+`, and text of `abc def`, `abc` and `def` will be matched, but `bc`, `c`, `ef`, nor `f` will be matched.