Suppress unified_diff for files deemed to be "binary".

For commits with lots of binary files or large binary files, the
memory usage in write_object_diff could get quite nasty.

Moreover, it is not really interesting to see the binary level
diff for binary files.

This change makes write_object_diff display a line saying
"Binary files a/old/path and b/new/path differ" instead
of the unified diff for files that it deems "binary" like, using
the same strategy used in the `git diff` command [1].

1. http://git.kernel.org/?p=git/git.git;a=blob;f=xdiff-interface.c#l197