change to a single-traverse of the AST that issues callbacks at each node

- roughly doubles speed of the compilation for moderately complex beasts