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.


This feels weird. There is nothing that's dynamic here. It would be more understandable to follow the convention that we use everywhere else and use a `freeDiffOptions()` which we defer.