Carry uninteresting flags back through already processed parents
If an interesting branch has had a chance to visit through the
parent commits that are behind the merge base of the interesting
branch and the uninteresting branch we won't get UNINTERESTING
carried into those commits, but they have already been produced
as output from the pending generator.
We carry the flags back through the parents for any branch we have
already SEEN (pushed into the pending queue), thus making sure the
UNINTERESTING flag goes back as far as we can get with our current
parsed parent lists. Since single commit chains are very common
(the so called strand-of-pearls) we try to perform a tail recursion
on the first parent and only use stack recusion when we need to
walk down the other side branches of a merge.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>