updating node parent interface

I want to support different tree behaviors through subclasses
of a generic node class, without requiring subclasses to manage
too much finicky state.
Made it possible to put arbitrary content in nodes

First attempt at a class structure that can be subclassed easily