Add a background job to watch for external filesystem changes

The background job iterates over all items in the filecache, each iteration one folder and one file are checked for external changes.

By iterating over files and folders separably, we decrease the number of times the background job needs to be run before it has checked all folders (because there are usually less folders than files). This increases the speed new files or folders are detected.

While this solved the issue where external filesystem changes are not synced to the desktop client, it can still take a while before the external change is detected if there are a large number of items in the filesystem cache due to the nature of background jobs.

cc: @karlitschek @MTGap @DeepDiver1975