Add a --checkout flag so you can checkout a branch

This work adds an optional flag `--checkout` that allows you to specify a branch, tag or commit (ie any valid argument to `git checkout`) that will be used with `git checkout` after the clone but before any other work is done.  This would allow a develop branch etc to be used.

This would be a solution to issue #21.

Things I'm not sure about:

* tests - I've added tests for the smaller bits, but not an overall integration test.  That would require a test repository with (say) a file that existed on one branch but not the other.  Do you require an integration test before merging?
* I've used subprocess so I can use the `cwd` argument. I notice you've used `os.system` elsewhere. Is using subprocess OK?
* `--branch` might be clearer for the standard use case.  Do you have a preference for which flag name to use?