AST adds precise details for nodes and positions.

This change annotates nodes with types, and in a couple cases where rewrites
result in lost token position information, it adds references to
the original tokens.

It is used by the visual block editor at [pencilcode.net](http://pencilcode.net/edit/intro). It shouldn't affect other users of CoffeeScript.