fix: close superseded file watcher before re-registering
When WatchFileWrite is called again for the same path, stop the prior
watcher by closing its done channel so StopFileWatch and replacement
registrations cannot leave duplicate callbacks active.
Co-authored-by: Cursor <cursoragent@cursor.com>