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.
Merge pull request #1833 from libgit2/cmn/config-include

Support config includes