Working toward getting the data syncing to happen robustly, so a bunch of improvements. * Got unmount events to be noticed, so unplugging and replugging a removable drive will resume the syncing to it. There's really no good unmount event available on dbus in kde, so it uses a heuristic there. * Avoid requeuing a download from a remote that no longer has a key. * Run a full scan on startup, for multiple reasons, including dealing with crashes. Ran into a strange issue: Occasionally the assistant will run `git-annex copy` and it will not transfer the requested file. It seems that when the copy command runs `git ls-files`, it does not see the file it's supposed to act on in its output. Eventually I figured out what's going on: When updating the git-annex branch, it sets `GIT_INDEX_FILE`, and of course environment settings are not thread-safe! So there's a race between threads that access the git-annex branch, and the Transferrer thread, or any other thread that might expect to look at the normal git index. Unfortunatly, I don't have a fix for this yet.. Git's only interface for using a different index file is `GIT_INDEX_FILE`. It seems I have a lot of code to tear apart, to push back the setenv until after forking every git command. :( Before I figured out the root problem, I developed a workaround for the symptom I was seeing. I added a `git-annex transferkey`, which is optimised to be run by the assistant, and avoids running `git ls-files`, so avoids the problem. While I plan to fix this environment variable problem properly, `transferkey` turns out to be so much faster than how it was using `copy` that I'm going to keep it.