Add QAST::NodeList; replace direct QAST::Node use.

This is a prerequisite for moving children out of the QAST::Node base
class, which will enable us to save an array allocation and pointer on
many node types that don't need children.
Refactor QAST node structure.

Now only nodes capable of holding children get a slot for them and an
array allocated, reducing memory. Also take the time to optimize the
new methods so we get away with a lot of the late-bound method calls.
Merge branch 'qast_restructure'