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.