config: decouple the backend from the reader at the low level

In order to support config includes, we must differentiate between the
backend's main file and the file we are currently parsing.

This lays the groundwork for includes, keeping the current behaviours.
config: add support for include directives

Relative, absolute and home-relative paths are supported. The
recursion limit it set at 10, just like in git.
config: keep a list of included files

When refreshing we need to refresh if any of the files have been
touched, so we need to keep the list.
config: refresh included files

We need to refresh the variables from the included files if they are
changed, so loop over all included files and re-parse the files if any
of them has changed.
config: fix variable overriding

When two or more variables of the same name exist and the user asks
for a scalar, we must return the latest value assign to it.
config: return an error when reaching the maximum include depth
config: handle realloc issues from larger depths

As the include depth increases, the chance of a realloc
increases. This means that whenever we run git_array_alloc() or call
config_parse(), we need to remember what our reader's index is so we
can look it up again.
git_clone supports optional init_options
Merge pull request #1850 from linquize/git-clone-init-options

git_clone supports init_options
clone: Anal as fuck
Add a wrapper to provide the libssh2 error message
Whitespace.
No such thing as an orphan branch

Unfortunately git-core uses the term "unborn branch" and "orphan
branch" interchangeably. However, "orphan" is only really there for
the checkout command, which has the `--orphan` option so it doesn't
actually create the branch.

Branches never have parents, so the distinction of a branch with no
parents is odd to begin with. Crucially, the error messages deal with
unborn branches, so let's use that.
Merge pull request #1851 from tiennou/libssh2-errors

Provide libssh2 error message
Merge pull request #1856 from libgit2/cmn/no-orphans

No such thing as an orphan branch
Fix failure in win32_find_git_in_registry()

The buffer size 0 was definitely not enough so it failed
Fix failure in win32_find_git_in_registry() when UAC is turned on

Demand read only access to registry key instead of full access.
This might happen in Windows Vista and later.
Merge pull request #1857 from linquize/find-git-path-win32

Fix failure in win32 git path guessing
Merge pull request #1833 from libgit2/cmn/config-include

Support config includes
Refactor git_win32__find_system_dirs() to extract "etc\\" as subpath parameter