teach tree-diff a max-depth parameter

When you are doing a tree-diff, there are basically two
options: do not recurse into subtrees at all, or recurse
indefinitely.  While most callers would want to always
recurse and see full pathnames, some may want the efficiency
of looking only at a particular level of the tree. This is
currently easy to do for the top-level (just turn off
recursion), but you cannot say "show me what changed in
subdir/, but do not recurse".

This patch adds a max-depth parameter which is measured from
the closest pathspec match, so that you can do:

  git log --raw --max-depth=1 a/b/c

and see the contents of a/b/c/, but not those of a/b/c/d/
(you would see the --raw entry for a/b/c/d in such a case).

Conflicts:
	diff.c
	tree-diff.c
combine-diff: zero memory used for callback filepairs

In commit 25e5e2b, the combined-diff code learned how to
make a multi-sourced diff_filepair to pass to a diff
callback. When we create each filepair, we do not bother to
fill in many of the fields, because they would make no sense
(e.g., there can be no rename score or broken_pair flag
because we do not go through the diffcore filters). However,
we did not even bother to zero them, leading to random
values. Let's make sure everything is blank with xcalloc,
just as the regular diff code does.

We would potentially want to set the "status" flag to
something non-zero, but it is not clear to what. Possibly a
new DIFF_STATUS_COMBINED would make sense, as this is not
strictly a modification, nor does it fit any other category.

Since it is not yet clear what callers would want, this
patch simply leaves it as "0", the same empty flag that is
seen when diffcore_std is not used at all.
add blame-tree command

This command shows the most recent modification to paths in
a tree. It does so by expanding the tree at a given commit,
taking note of the current state of each path, and then
walking backwards through history looking for commits where
each path changed into its final sha1.