Fix handling of TreeView add/remove events

* Previously, if multiple "remove" events happened before the
  `queue_event` timeout, `oldList` would only reflect the latest event
  instead of the sum of events.
* Now, make `oldList` changes incremental and wait for 20ms since the
  *last* "remove" event before actually removing objects