Improvements to git_transport extensibility

git_remote_set_transport now takes a transport factory rather than a transport
git_clone_options now allows the caller to specify a remote creation callback
Merge pull request #2440 from phkelley/transports

Improvements to git_transport extensibility