Switch to specified branch during clone

This PR adds the `checkout_branch` member to the `git_clone_options` and implements switching to that branch (before checkout), if it is given.

If there is no `remotes/<remote_name>/<checkout_branch>`-ref, the clone operation fails. That is analog to the behaviour of `git clone -b foo <url>`, if `foo` cannot be resolved.

`git clone -b 1234` creates a detached head, if `1234` is a tag or a SHA1. _That is not implemented here_.