Don't reset aggregate timer with every ST/FS event received
Don't reset aggregate timer with every ST/FS event received

Currently, the aggregate timer is reset on every iteration of
the event loop in accumulateChanges, which means that if you
receive ST/FS events faster than one per debounceTimeout,
we can be prevented from falling into the aggregate case
indefinitely.

This causes slower updates under heavy/steady change load, and
can also cause updates to be lost if they are delayed longer
than 10 * debounceTimeout, as at that point those updates will
be deleted via the "expired paths" check during aggregation.

This patch changes the event loop in accumulateChanges such that
the timer is only reset whenever it fires or when currInterval
is modified.

syncthing/syncthing-inotify,syncthing/syncthing-inotify,syncthing/syncthing-inotify,imsodin/syncthing-inotify,imsodin/syncthing-inotify,plouj/syncthing-inotify,imsodin/syncthing-inotify,plouj/syncthing-inotify,plouj/syncthing-inotify