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.