Teach RevWalk how to compute the merge base of 1 or more commits
Computing the merge base of two commits is often necessary to look
for safe fast-forwards of a tracking branch, but is also necessary
to actually perform a 3 way merge of two branches.
This merge base algorithm is generalized to handle 1 to 26 starting
commits (otherwise known as branches), where the upper limit of 26
is actually bounded only by the number of free RevFlags available
within the RevWalk being used.
The merge base of 1 commit is always itself. The merge base of
two or more commits along a string-of-pearls is always the oldest
ancestor in the group.
Unlike C Git's `git merge-base` program we generalize well to
compute merge bases for more than two branches.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>