This struct has been bothering me for a while. I think what you're doing here is more in keeping with what it *should* be, but it's kind of a ghetto right now.

* `progress` is a hook that lets you see what the remote git is sending through the progress channel, `\r`'s and all. 
* `completion` and `git_remote_completion_type` doesn't appear to be referenced anywhere else.

Do these really belong on our public API? I'm not sure if this in scope for *this* PR, but something we should consider. What do you think?

The other side of the coin is that, if this is the primary way to get network transfer progress information, this struct should be documented way better.