revwalk: catch no-push and no-hide cases

If there have been no pushes, we can immediately return ITEROVER. If
there have been no hides, we must not run the uninteresting pre-mark
phase, as we do not want to hide anything and this would simply cause us
to spend time loading objects.
revwalk: clear first-parent flag on reset

This should have been included when implementing the feature but was
missed.