tree: add simplified treeview implementation

This gives us the concept of Nodes and Builders. Builders can build nodes
and children recursively. This is convenient to build things like
project structures where some content is dynamic.