Diff: heed DiffOptions fields OldPrefix and NewPrefix

This PR makes diffing heed the OldPrefix and NewPrefix fields in
DiffOptions.

Before this patch, running the modified TestDiffTreeToTree fails:

```
--- FAIL: TestDiffTreeToTree-12 (0.02s)
	diff_test.go:150: Diff patch doesn't contain "x1/README" or "y1/README"
		
		diff --git a/README b/README
		index 257cc56..820734a 100644
		--- a/README
		+++ b/README
		@@ -1 +1 @@
		-foo
		+file changed

```

It passes with the changes to diff.go in this PR.


Why `defer`? These are the last two statements in the function.