Add support for specifying other configs to merge

This adds support for setting a `includes` field in your config. It expects `includes` to be an array of config-file relative paths that point at other config files to read & merge with the existing config.

Also refactored a bunch of code & tests to simplify things & streamline tests a bit.