Remove the `_GET` function suffix.
Change `Rugged::Tag.create` to be a bit more friendly.

This also drops the functionality for creating a tag from a raw string.
Correctly report the class when inspecting ref subclasses.
Split Rugged::TagAnnotation off of Rugged::Tag.

Rugged::Tag is now a subclass of Rugged::Reference.

Tags can now be looked up by their name using Rugged::Tag.lookup.

Rugged::Repo#tags now returns a list of Rugged::Tag objects.
Update the docs.
Add Tag#target and Tag#annotation.
Rugged::Tag.create now returns the created tag.
Fix a test failure. Not sure why I haven't seen this before.
Fix the tag lookup logic, as seen in libgit2/libgit2sharp#498.

Also move the logic to basic C string operations.
Add a test for the tag lookup behaviour.
No magic numbers, please.
Remove superfluous whitespace.
Fix a test failure.
Update tests.
Change the code as suggested by @nvloff.
Update failing testcases to reflect the Tag -> TagAnnotation change.
Pull out most Rugged::Reference class methods into a ReferenceCollection class.
Move some Reference instance methods to the ReferenceCollection.

This is mainly for all instance methods that make no sense to be
available in subclasses of Rugged::Reference.
Pull out all Rugged::Branch class methods into a BranchCollection.
Fix a tiny typo.