Remove most inlines from the public API

This creates external linkable APIs for all the standard object functions (lookup, lookup prefix, free, id, and owner) for blobs, trees, and tags. Also, this makes git_oid_cmp be non inline (and adds a git_oid__cmp for internal inlines usage).

I also ended up looking at a number of other OID functions and am proposing a few other things...

* Added `git_oid_strcmp` which is like `git_oid_streq` but is a traditional `cmp` style function instead of just match/no-match.
* Internally `git_oid_strcmp` is written to walk the OID and string data stopping as soon as a mismatch is found. The old `git_oid_streq` was converting the entire string to an OID before starting the comparison, so this should be more efficient.
* Changed `git_oid_streq` to just call the new `git_oid_strcmp` and check for a zero result.
* The `git_oid_ncmp` function was not being careful with small values for length (0 or 1) and was not stopping at the max length (and didn't have any tests), so I fixed that.