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 failing 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
revwalk: add a test for pushing all references

This used to be broken, let's make sure we don't break this use-case.
revparse: do look at all refs when matching text

Now that we no longer fail to push non-commits on a glob, let's search
on all refs when we rev-parse syntax asks us to match text.
docs: produce literal asterisks
commit: faster parsing

The current code issues a lot of strncmp() calls in order to check for
the end of the header, simply in order to copy it and start going
through it again. These are a lot of calls for something we can check as
we go along. Knowing the amount of parents beforehand to reduce
allocations in extreme cases does not make up for them.

Instead start parsing immediately and check for the double-newline after
each header field, leaving the raw_header allocation for the end, which
lets us go through the header once and reduces the amount of strncmp()
calls significantly.

In unscientific testing, this has reduced a shortlog-like usage (walking
though the whole history of a branch and extracting data from the
commits) of git.git from ~830ms to ~700ms and makes the time we spend in
strncmp() negligible.
utils: don't reimplement strnlen

The standard library provides a very nice strnlen function, which knows
to use SSE, let's not reimplement it ourselves.
Split p_strlen into its own header

We need this from util.h and posix.h, but the latter includes common.h
which includes util.h, which means p_strlen is not defined by the time
we get to git__strndup().

Split the definition on p_strlen() off into its own header so we can use
it in util.h.
Merge pull request #2103 from libgit2/cmn/parse-commit-faster

commit: faster parsing
Merge pull request #2094 from libgit2/cmn/push-non-commit

Add flexibility to the revwalk API