[WIP] Configuration Trees

(See https://trello.com/c/wpI2gX5I/13-configuration-trees.)
[You don't have to reply to these. See my main comment.]
StringBuffer should be used, because that way the complex string building won't involve a big series of StringBuffer allocations and deallocations. (That's what the `+` operator does with strings - allocate a new StringBuffer and use it to combine the arguments.)