Add method to create a new lightweight tag.
Merge remote-tracking branch 'refs/remotes/upstream/master' into lightweight_tag

Conflicts:
	Classes/GTTag.h
Move methods to create new tags to GTRepository and call them from the GTTag class methods.
Remove class methods to create new tags from GTTag and update unit tests.
Whitespace fixes.
Fix doc indentation.
Move test cases from GTTagTest to GTRepositorySpec and move to expect() syntax.
Add class method to check for valid reference names.
Get the SHA from the unresolved target otherwise we'll crash later.
add checkout function
Fix issues raised in review.
Enums aren't typed.
Fix the HEAD selection code.

This allows both checkouts of references and commits. I'm not sure about tags though…
Tests + fixes because tests failed.
Clarify the typedefs.
Typedef the blocks.
Move the parameters around + documentation.

Because it feels better to have blocks at the end.
Add a convenience wrapped if notifications are not wanted.

And use that in tests.
Typo + indentation.
Another wrapper if you really aren't interested in blocks.