As noted, git-diff-tree is quite slow. We can do much better, by
stepping across the two trees ourselves.
There should be no particularly significant change: the answers should
be the same for reasonable inputs. Unreasonable inputs (particularly,
executable files etc.) may be handled better, even.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>