Teach Checkout() to append to the reflog

This PR covers part of issue #389.

Any `Repository.Checkout()`call is now appending an entry in the reflog, respecting `git.exe`behavior.
In particular, I tested it when checking out on branches, commits and with revparse syntax.
To make it work with revparse syntax, I corrected the `Checkout()` current implementation to cope with it first.

I also added a trick : as a `ReflogEntry` needs a `Comitter`, it usually builds a `Signature` from the git config options. In case there is no such configuration, `git.exe` creates a dummy user with `user.name = "unknown"` and `user.email = "{machine_user_name}@{machine_user_domain_name}"`. I added the same kind of behavior in `Configuration` class to append the reflog on checkout.