remote: call user-provided callbacks

The user can set 'progress', 'transfer_progress' and 'update_tips' to be
notified whenever one of those happen.
TransferProgress: create this type for transfer progress reporting

This gets passed to the transfer progress callback, instead of the
stripped-down version which Remote.fetch() returns.
Refspec: fix copy-paste error