blame-tree wip

This is rewritten from the original RFC to combine much more
tightly with the usual revision traversal. This has two
important implications:

  1. The merge behavior is now sane (we will blame only
     merges which do not match any of the parents, meaning
     there was some conflict resolution).

  2. You can get tree-blames for arbitrary subsets of the
     tree, like:

       git blame-tree HEAD -- Documentation

This also makes the syntax more sane (as above) and like
git-log and git-blame. Note that we still do not recurse by
default, so the command above will produce just a
single-line (the blame of the Documentation directory).
Which needs fixed, since we really want to see what's in
Documentation/.
blame-tree: pass blame across renames
blame-tree: porcelain option wip

This needs builtin/blame to get refactored.