Support nested values in config overrides

This is another follow-up PR for #47.

The first commit updates gitignore, it's best to keep these non-code changes in standalone commits.

The second commit is the original implementation as contributed by @shelbys.

The third commit builds on top of the second commit, adds more tests, fixes issues and cleans the code up.

Close #47

/to @raymondfeng please review