Make patch.write_object_diff suppress diff for binary files

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

Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
Added tests for write_object_diff with binary files

Added tests for patch.write_object_diff's binary comparison
behaviour.

Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
Update NEWS, provide way to force diffing of binary files.