Introduce reflog

This PR is originated by issue #371.

I first introduced the ability to read the reflog : 

	ReflogCollection reflog = repo.Refs.Log(string canonicalReferenceName);
	ReflogCollection reflog = repo.Refs.Log(Reference reference);

A `ReflogCollection`is a `IEnumerable<ReflogEntry>`, where `ReflogEntry`contains details about a single entry.

Then I corrected the issue by calling `ReflogCollection.Append()` from the `Repository.Commit()` method.
I implemented correct message formatting for standard commits and ammended commits. I'm not sure if there is another case to cover.

- [x] First review
- [ ] First amend
- [ ] second review
- [ ] second amend
- [ ] Merged!