An alternative for 'clone' with options

There are many different ways you might want to configure your repository and remote as part of the setup for cloning. Instead of adding fields to a struct to proxy those options, let the users configure the repository and remote as they wish and let the library take over for the cloning process.

On the way there, unify the callbacks for the remotes. An effort to do this started quite some time ago, but it never got as far as `_download()` so put the download progress and credentials callbacks in the struct for them.