Allow RevWalk's flag carrying behavior to be overridden
Some applications may need to carry flags not just onto the parents
of a commit, but also onto the tree and its referenced subtrees and
blobs. Doing this can be expensive, so we only want to pay such a
penalty if full object tracking has been enabled/requested by the
application code. By redirecting this carry logic into RevWalk we
permit it to be overridden by a specialized RevWalk subclass.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>