It would be really nice if external tools working with annex could obtain updates on the progress of operations so they could report using their own UI back to the user.  Especially relevant for --batch --json modes of operations (e.g. for get or addurl) whenever no progress is reported by annex itself at all.  

Related:
[datalad #478](https://github.com/datalad/datalad/issues/478)


[[!meta author=yoh]]
[[!tag projects/datalad]]

> --status-fd is one way, or the progress could be included as
> part of the --batch protocol. In either case, it might make sense to
> reuse part of the external special remote protocol. (Which would let you
> relay the progress messages when datalad is doing a nested retrieval, I
> suppose.) --[[Joey]]

>> [[done]]; --json-progress implemented. I limited the frequency of json
>> progress items to 10 per second max, and it's typically only 1 per
>> second or less, so didn't implement
>> --json-progress=N to tune it. Also added --json and --json-progress to
>> copy, move, mirror commands. --[[Joey]]
