revising the AST (and the ANF AST) to track precise locations for the constructors of datatype declarations, for better arity-errors later on.  Resolves #166.
restoring `and` and `or` as infix boolean operators, and leaving `not` as a function only.  also binding `both` and `either` as the prefix function forms of `and` and `or`.