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.
revparse: Prevent unnecessary odb backend calls
revparse: Simplify error handling
Merge pull request #1835 from libgit2/ntk/fix/less_backend_calls_on_revparsing

Some revparse love
Merge pull request #1836 from libgit2/ntk/fix/leaks

Fix memory leaks
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.
odb: Error when streaming in too [few|many] bytes
Trim leading colon from ssh repository path
fixes issues with objective-git
Test for repo before removing leading colon
Merge pull request #1837 from libgit2/ntk/topic/control_stream_write_size

odb: Error when streaming in less|more bytes than declared
Comment updates
Merge pull request #1842 from uh-sem-blee/development

fixes issues with objective-git
fixing headers with bad values for objective-c
Adding add example.