Tree
Tree is composed of one or more Nodes. A tree is always non-empty.
Tree root
Tree can be constructed from a root value of type T, which can be accessed
later via root() and root_mut().
Children
Tree can insert/delete child Nodes at front/back of its children list,
which is a conceptual Forest and can be removed once the abandon() is called.
Degree
The amount of child nodes of a tree is called tree's degree().
The amount of all nodes of a tree is returned by node_count().
Breadth first search
A Tree may be converted to an owning iterator via into_bfs(), which
iterates all its nodes in the manner of breadth first search.