Flatten the AST.

`seg_expr_nodes` don't actually add any semantics to the AST, so they shouldn't actually be visited by an AST visitor. Also, the `seg_expr_node`-with-pointer-to-other-struct thing is unnecessarily complicated; it's causing twice as many `malloc`'s in every parsing phase, not to mention uglying up the code something fierce. Flatten the child structures into the parent expression node, directly within the union.