Support config includes

This should handle #1646. As a bonus, we now actually handle overriding variables correctly.

What we don't currently support is the `~user/file` style (we do support `~/file`) but I don't think that's a big deal (and we'd need to figure out what to do on Windows) so I'm sending this now and we can add that later.

`git-config` allows you to look up or list variables without following the includes. It's not clear how we'd support this API-wise (as we'd need an extra param or something), so that's not here either.

Everything else works.