[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).
Looking at this more, I think it's better to be safe and keep the null checks here. findBar is not null when we attach the event handler, obviously, but it could be by the time the handler is called. This is because the reference to findBar is nulled when we get its close event, but that event is sent out before the bar animates out. So it's conceivable that someone could somehow click on a button in the bar after we've nulled our reference here.