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
reflog: follow core.logallrefupdates

On bare by default, or when core.logallrefupdates is false, we must not
write the reflog.
reflog: remove some dead code
Merge pull request #2194 from libgit2/cmn/reflog-bare

reflog: follow core.logallrefupdates
revwalk: don't try to find merge bases when there can be none

As a way to speed up the cases where we need to hide some commits, we
find out what the merge bases are so we know to stop marking commits as
uninteresting and avoid walking down a potentially very large amount of
commits which we will never see. There are however two oversights in
current code.

The merge-base finding algorithm fails to recognize that if it is only
given one commit, there can be no merge base. It instead walks down the
whole ancestor chain needlessly. Make it return an empty list
immediately in this situation.

The revwalk does not know whether the user has asked to hide any commits
at all. In situation where the user pushes multiple commits but doesn't
hide any, the above fix wouldn't do the trick. Keep track of whether the
user wants to hide any commits and only run the merge-base finding
algorithm when it's needed.
Merge pull request #2195 from libgit2/cmn/revwalk-no-hide

revwalk: don't try to find merge bases when there can be none
Fix wrong assertion

Fixes issue #2196
Merge pull request #2197 from linquize/assert-wrong

Fix wrong assertion
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