Woke up this morning with most of the design for a smarter approach to
[[syncing]] in my head. (This is why I sometimes slip up and tell people I
work on this project 12 hours a day..)

To keep the current `assistant` branch working while I make changes
that break use cases that are working, I've started 
developing in a new branch, `assistant-wip`.

In it, I've started getting rid of unnecessary expensive transfer scans.

First optimisation I've done is to detect when a remote that was
disconnected has diverged its `git-annex` branch from the local branch.
Only when that's the case does a new transfer scan need to be done, to find
out what new stuff might be available on that remote, to have caused the
change to its branch, while it was disconnected.

That broke a lot of stuff. I have a plan to fix it written down in
[[syncing]]. It'll involve keeping track of whether a transfer scan has
ever been done (if not, one should be run), and recording logs when
transfers failed, so those failed transfers can be retried when the
remote gets reconnected.
