Fix local push to file:// URL.
Add test for pushing to a local file:// URL.
Fix a compile warning.
Factor out code to convert local "url" into a path.

Previously this code was shared between `local_push` and `local_connect`.
git_reflog_entry_message can be null
fix corner cases and an undefined behavior
add unit tests for git_buf_join corner cases
Merge pull request #2064 from piki/piki/buffer-corner-cases

Fix a couple of corner cases and an undefined behavior
Merge pull request #2063 from linquize/reflog-msg-null

git_reflog_entry_message can be null
"Uninitialized" submodules are "unmodified"

Extend the "unmodified" submodule workdir test to include
uninitialized submodules, to prevent reporting submodules as
modified when they're not in the workdir at all.
Merge pull request #2065 from ethomson/submodule_unmodified

"Uninitialized" submodules are "unmodified"
merge_file should use more aggressive levels

The default merge_file level was XDL_MERGE_MINIMAL, which will
produce conflicts where there should not be in the case where
both sides were changed identically.  Change the defaults to be
more aggressive (XDL_MERGE_ZEALOUS) which will more aggressively
compress non-conflicts.  This matches git.git's defaults.

Increase testing around reverting a previously reverted commit to
illustrate this problem.
Don't try to merge binary files
Introduce diff3 mode for checking out conflicts
Load merge.conflictstyle setting from config
Remove the "merge none" flag

The "merge none" (don't automerge) flag was only to aide in
merge trivial tests.  We can easily determine whether merge
trivial resulted in a trivial merge or an automerge by examining
the REUC after automerge has completed.
Support union merges
Merge submodules
Merge pull request #2061 from ethomson/merge_improvements

Merge improvements
Expose patch serialization to git_buf

Returning library-allocated strings from libgit2 works fine on Linux,
but may cause problems on Windows because there is no one C Runtime that
everything links against. With libgit2 not exposing its own allocator,
freeing the string is a gamble.

git_patch_to_str already serializes to a buffer, then returns the
underlying memory. Expose the functionality directly, so callers can use
the git_buf_free function to free the memory later.