Replace node public constructors with static factory methods. Make parse() a static factory
rearrange functions in node.cpp. make node factories and accessors return consts always.
Wrap generate() in a service object