[replace-across-files] Unify Find Bars across FindReplace/FindInFiles

This gets rid of a lot of the redundant find bar code across single-file and multi-file find. There are still a few bits in FindInFiles that directly monkeypatch into the FindBar's ModalBar (see the TODOs in FindInFiles), but I think we can clean that up later if we want.

The first two commits are fairly semantic, and it's probably worth looking at them individually (the big one is the second one) - I added some comments in the individual commits, but if you want I can move them to the main PR diffs.

Note that this PR is a PR into the `nj/replace-across-files` branch, so this can be merged when it's reviewed (it'll just go into that long-running branch).
Oh I see -- we're now calling parseQuery() for every Add Next Match / Find All & Select operation as well... so that answers my above question. That seems fair, but maybe to clarify we should document parseQuery() to indicate it can be called headlessly _but_ if any find bar UI is open when it's called, errors are shown there automaticaly.  (Or to be even more crisp, we could add a flag or some other indicator to tell it when to operate headlessly -- which would allow it to be invoked headlessly even if a find bar UI happens to be open).