Add commit amend function
Update libgit2 to point where git_commit_amend was added to public API
'Fix' method calls that now have optional params for the reflog
Don't require a tree
Set tree to NULL be default
Turns out all the things are optional
Merge pull request #321 from GoBoundless/commit_amend

Add commit amend functionality
Fix a potential memory leak in the new `Commit#amend`.

`rugged_object_get` raises an exception in case the given object is
neitther a
`Rugged::Object` nor a String, and that will leak the memory of
`committer`
and/or `author`.
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.