Add git_transport_register, git_transport_unregister
Merge pull request #1885 from ethomson/transport_register

Add git_transport_register, git_transport_unregister
remote: put the _download() callback with the others

The text progress and update_tips callbacks are already part of the
struct, which was meant to unify the callback setup, but the download
one was left out.
remote: move the credentials callback to the struct

Move this one as well, letting us have a single way of setting the
callbacks for the remote, and removing fields from the clone options.
clone: implement git_clone_into

This allows you to set up the repository and remote as you which to
have them before performing the clone operation.
remote: add a convenience 'fetch' function.
clone: remove the autotag option

Downloading all tags is part of what makes it a clone instead of
simply a fetch.
clone: implement git_clone on top of git_clone_into

Unify the code bases.
clone: remove more options from basic clone

The basic clone function is there to make it easy to create a "normal"
clone. Remove a bunch of options that are about changing the remote's
configuration.
clone: re-add a way to ignore certificate errors

This used to be done via transport flags, which was removed in a
previous commit.
clone: const-ify checkout options

The removal of many options which lead to the direct usage of the
user's checkout options means we should make sure they remain const.
clone: re-allow using a custom remote name

This is a small thing that by itself doesn't quite justify making the
user use clone_into.
clone: bring back NULL as defaults

This wasremoved as part of the large culling a few commits ago.
clone: mention clone_into in the clone documentation

Make the difference more explicit.
remote: add some comments to the callback struct

Hopefully clear up what they're for.