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.