Uglify our AST somewhat by including more tokens.

This is necessary to be able to print meaningful semantic error
messages during type checking. For example, we want to be able to
point to the line/column of the '+' token if type checking of the
plus operator failed, and so on and so on.

This change adds such tokens to the AST for various statements and
expressions. See the comments on the individual lines in the pull
request.