Properly track offsets for multiline regexps in Find/Replace in Files

For #8162.

@peterflynn - note that there are a couple of cases here in calculating the end offset properly (since you need to only take the length of the last matched line into account if there are multiple lines). I added unit tests for a few different cases - let me know if you think there are some that I missed.

Also, note that we don't actually display all the matched lines in the results view. Do you think we should fix that as well?
@njx There are JSLint errors in this file. The end of lines 101-103 have commas, but should have semi-colons.

Travis CI is failing with the following error:

```
Running "jshint:all" (jshint) task
Linting src/search/FindInFiles.js...ERROR
[L104:C69] W030: Expected an assignment or function call and instead saw an expression.
lastLineLength = matchedLines[matchedLines.length - 1].length;

Warning: Task "jshint:all" failed. Use --force to continue.
```