Teach Checkout() to cope with revparse extended syntax leading to references

Fixes #439

When being passed a revparse expression such as `@{-1}` or 'master', `Checkout()` currently detaches the `HEAD`.

Libgit2 now exposes `git_revparse_ext()` which should help dealing with this. (see libgit2/libgit2@e841c53 and libgit2/libgit2@f672cd2).

- [x] Unskip the `CheckoutPreviousCheckedOutBranch()` test and make it assert that the `HEAD` is attached
- [x] Enhance the test coverage to cover following cases
    - A local branch (ie. `master`) -> should lead to `HEAD` being attached
    - A remote branch (ie. `origin/master` or `master@{u}`) -> should lead to `HEAD` being detached