This change exposes the raw SSH hostkey and the ssh.PublicKey into the CertificateCheckCallback, so that callers can do better validations.
This change uses the newly-exposed Transport interface to use Go's implementation of http.Client instead of httpclient via libgit2.
This change adds support for git smart transports. This will be then used to implement http, https, and ssh transports that don't rely on the libgit2 library.