Add queued processing of file system changes

Also change to using a timer instead of Application.Idle to process
file system changes (since Application.Idle works only when the program
is actively processing events).