Blame Take Two

This builds on @uncommon's work at #289. Here's what I added:

- Added a `enumerateHunksUsingBlock` method and a `hunks` property.
- Rewrote the options parameter. Previously it used a `GTBlameOptionsFlags` now it uses a `NSDictionary` and supports all the options. As part of this change I had too add a `git_oid_struct` method to GTOID cause of libgit2 weirdness.
- Wrapped `git_blame_get_hunk_byline`
- Added error parameters to appropriate methods.
- Documentation++
- Implemented `isEqual:` and `hash` methods for `GTBlameHunk` cause the default methods were returning false negatives. (Can you take an extra close look at the `hash` method? I'm worried I didn't implement it right.)
- Added tests.
- Added `GTBlame.h` and `GTBlameHunk.h` to `Objective-Git.h` and fixed their header visibility.
- Style fixes