`cmsys::SystemTools::SplitPath` will return empty segments on paths
where there's duplicaded consequent slashes (e.g. `/home/dir/my//stuff`).
This makes the cmFileWatcher choke. Teach cmFileMonitor to skip these
empty segments.
Closes: #16531
Add a signal handler to trigger shutdown and be more paranoid about
libuv doing things asynchronously. This should fix test cases not
shutting down properly.
Enable the server to watch for filesystem changes. This patch includes
* The infrastructure for the file watching
* makes that infrastructure available to cmServerProtocols
* Resets the filesystemwatchers on "configure"