Stop "shifting" parts off ast sexps during code generation

Shifting the expressions breaks the AST tree, and we may wish to reuse
the tree later on. Now, all sexps are just accessed using Array#[] so
that they remain in structure after nodes are visited.