make "unparsing" of ASTs automatic

As I did in Preserving Original Token Sequence In ASTs, track the range of tokens covered by each subtree so we can spit out the nodes in the original order.