[WIP] Configuration Trees

(See https://trello.com/c/wpI2gX5I/13-configuration-trees.)
[You don't have to reply to these. See my main comment.]
This constructor should probably be private, package-private, or protected. It's not a thing that normal users should see. Either this or the caller will need to do consistency checking so that malformed trees (for example, with duplicate element names) can't happen.