Add kernel types, in preparation for lexer.

We abuse some of those to represent tokens.
Add end position to all syntax elements.

Just because of feature creep.
Ignore whitespace and line comments.