revwalk: accept committish objects

Let the user push committish objects and peel them to figure out which
commit to push to our queue.

This is for convenience and for allowing uses of

    git_revwalk_push_glob(w, "tags")

with annotated tags.
revwalk: add a failint test for pushing "tags"

This shows that pusing a whole namespace can be problematic.
revwalk: ignore wrong object type in glob pushes

Pushing a whole namespace can cause us to attempt to push non-committish
objects. Catch this situation and special-case it for ignoring this.
revwalk: remove usage of foreach