adding support for semantic actions in parse-tree construction: pass
in a dictionary whose fields have the names of productions whose
semantic values you want to override.  Then for any rule that had a
defaultAction as its rule (i.e., not Inline or ListCons synthetic
rules), if the dictionary has an action for that name it will be
called instead.  The calling convention is (List<Kids>, pos) ->
ASTNode, where ASTNode currently must have a pos field for use in
constructing source-location information (though this might get
refactored later to be a factory method, to make positions abstract
just as ASTNodes can be).
Merge branch 'nwo' of github.com:brownplt/pyret-lang into nwo
replacing constructUniqueParse algorithm with one that takes constant
stack space (in case of really, really deep, really ASTs that might
blow out the JS stack)