Fix local push to file:// URL.
Add test for pushing to a local file:// URL.
Convert gitdir paths to posix on Windows

Apparently, a .git file with "gitdir: path" link on Windows is
allowed to use backslashes in the path.  Who knew?
Fix a compile warning.
Merge pull request #2058 from libgit2/rb/gitdir-windows-paths

Convert gitdir paths to posix on Windows
Fix segfault when calling git_config_get_* functions when a config fails to load

Reinitialize the result code of get_entry() to GIT_ENOTFOUND
Merge pull request #2059 from linquize/git_config_get_crash

Fix segfault when calling git_config_get_* functions when a config fails to load
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.