And, perhaps more importantly, fix the fact that if a filename changed from a
directory to a file (or vice versa), we must consider it a delete and an add,
not a "filechange".
During original development I had different name-bases for source and
destination, so that I could make the output show how it got removed
from "tree a" and added to "tree b", but we don't want that. We only
do recursive diffs on anything where the bases are exactly the same,
so we might as well just work with a single base.
Also, make the output for "changed" be a single line, since people
hated the separate '<' / '>' format. They were right. It sucked.