AbstractNode add_child(AbstractNode c)
Adds a child node to this node. The child node is added last in the child list and its parent reference is updated.
The updated child node is returned.