fs: Replace `GlobalWatcher` with an `OsWatcher` that contains one backend (#63898)
Before, `GlobalWatcher` held a native backend and a polling backend, and
its methods dispatched to one or the other.
After this PR, we have `OsWatcher` which wraps a single watch backend,
and `RealFs` and `FakeFs` hold a native `OsWatcher` and a polling
`OsWatcher`.
This moves the split closer to the place where we decide which backend
should be used, and lets us clean up some indirection. A nice bonus is
that the "is this backend recursive" data exists in exactly one place.
Release Notes:
- N/A
6f73c7d0a4Cole Miller committed on 9/7/2026, 8:42:19 PM· committed by GitHubparentdb10a8d