Fix a number of git_odb_exists_prefix bugs

The git_odb_exists_prefix API was not dealing correctly when a
later backend returned GIT_ENOTFOUND even if an earlier backend
had found the object.

Additionally, the unit tests were not properly exercising the API
and had a couple mistakes in checking the results.

Lastly, since the backends are not expected to behavior correctly
unless all bytes of the short id are zero except for the prefix,
this makes the ODB prefix APIs explicitly clear out the extra
bytes so the user doesn't have to be as careful.
Add failing test for git_object_short_id
Introduce git_merge_file for consumers
Add `git_merge_status` to provide info about an upcoming merge
Remove fastforward / uptodate from `git_merge`
Change signature of `git_merge` to take merge and checkout opts
Update git_merge_tree_opts to git_merge_options
Remove `git_merge_result` as it's now unnecessary
git_merge_status -> git_merge_analysis
Introduce GIT_MERGE_ANALYSIS_UNBORN
UNBORN implies FAST_FORWARD
settings: use git_buf for returning strings

This survived the last round of culling, as the signature is only in the
comments.
opts: bits are not bytes

The default cache size is 256 megabytes, not megabits as claimed in the
docs.
Merge pull request #2200 from libgit2/cmn/opts-buf

settings: use git_buf for returning strings
Merge pull request #2183 from ethomson/merge_refactor

Refactor the `git_merge` API
env test needs to deref git_buf's ptr
Merge pull request #2201 from ethomson/gitbuf_test_fix

env test needs to deref git_buf's ptr
Callback to hide commits in revision walker.
Unit Tests for hide_cb in revwalk
Remove unused push_cb_data