Add -[GTBlob applyFiltersForPath:error:]

Also included some methods for converting between `NSData` and `git_buf`, which is used extensively by libgit2 to represent chunks of data.

**To do:**

 - [x] Test the `NSData` category
I'm :+1: on fixing this, but I notice there are a lot of other places where we're still using file system representations.

Should those all be changed? Is there a rule for when to use one vs. the other?