Add flexibility to the revwalk API

Allow the user to push a committish, rather than simply a commit. This comes as a side-effect of the more useful glob pushing, but it's nice by itself.

Having the wrong object type is acceptable in case of a glob, and we treat that as a special case where we simply ignore the error. This actually makes `git_revwalk_push_glob("tags")` useful in case you have annotated references or have tagged trees or blobs.

This fixes #2090.