Refactoring to remove union data in favor of void ptr
Freeing list pointer in list_destroy
Implementing a basic n-ary tree

A tree is represented as containing data (such as a token) and a list of
children, whose nodes' data members are themselves trees. Thus the tree
is described recursively, using the doubly linked circular list.