DebouncedSaver
Coalesces a burst of save requests into one asynchronous write.
The first request after an idle period schedules the write delaySeconds later; requests arriving before it fires are absorbed by it, so a player toggling a setting repeatedly costs one file write rather than one per toggle.
A request arriving while a write is pending is dropped rather than queued, so one saver serves exactly one file - sharing it would silently lose the other file's save. FileStore owns one each so that rule cannot be broken by wiring.