Push support.
DRY the remote connection management.
One less function call (performance matters).
Push doesn't support progress report.
Add `pushRefspecs` property.
Spec for pushing.

Still failing.
Convert local `file:` URLs to paths before handing over to `git_clone`.

Fixes a bug where a locally-cloned remote would get a `file:` URL as it's origin URL, making the push machinery shrivel in fear.
Merge branch 'fix-local-clone' into push