[WIP] implement checkout

so here's another operation which supports progress - `checkout`

 - [x] support for the common overloads from `libgit2sharp`
 - [ ] folding in some of the cleanup to the other operations
 - [ ] testing