Add initial Rugged::Diff implementation

WIP - So far this allows you to iterate over deltas in a diff.
Adding support for iterating over each hunk of a delta next.
Add support for iterating over hunks of a delta from a diff
we figured this out
add some ruby-based helpers to Rugged::Diff::Delta
add owner accessor and inspect to Rugged::Diff::Hunk
Add support for iterating over the lines of a hunk
Rugged constant isn't used here
make Rugged::Diff::Delta and Rugged::Diff::Hunk enumerable
add Rugged::Diff::Delta#hunks enumerator
add Rugged::Diff::Hunk#lines enumerator
make Rugged::Diff enumerable

also add Rugged::Diff#deltas enumerator
add Rugged::Commit#diff
add Rugged::Repository#diff
whitespace
Add Rugged::Diff#merge!

I named this "merge!" because the operation down in C is destructive
to the original diff the caller is merging the other diff onto.
We could probably have a "merge" one that returns a new Rugged::Diff
object but it makes memory management a little trickier.
Add Rugged::Diff#write_patch
just use rb_io_write
removing some extra doc lines
add option to print a compact patch
update docs for patch printing/writing