[WIP] Configuration Trees

(See https://trello.com/c/wpI2gX5I/13-configuration-trees.)
[You don't have to reply to these. See my main comment.]
Huh???? Why is `currentNode` set to `node` and then just returned?
In the case that the node already exists... this just does nothing but return the new node. (The old node is still there.)
In the case that the node doesn't exist... this sets the node and returns the specified node, but otherwise does nothing.
In any case, the result from getNode should be more clearly discarded if it isn't to be used, and the behavior that this won't modify the tree if the node already exists at all should be clearly documented.