parser: move stable content of `lexer.nit` into `lexer_work.nit

What is still generated is thus even more minimal.

Signed-off-by: Jean Privat <jean@pryen.org>
parser: add `SourceFile::first_token` and `SourceFile::last_token`

This helps to manipulate the token list.

Signed-off-by: Jean Privat <jean@pryen.org>
parser: add some basic tree services in ANode

* `ANode::root` to get the root node
* `ANode::common_parent` to get the smallest common parent of two nodes
* `ANode::depth` to get the distance beween root and self

Signed-off-by: Jean Privat <jean@pryen.org>
parser: `ANode::debug` outputs on stderr instead of stdin

Signed-off-by: Jean Privat <jean@pryen.org>
parser: add `Token::blank_before`

Signed-off-by: Jean Privat <jean@pryen.org>
parser: dot dotdot and dotdotdot are not operators

Signed-off-by: Jean Privat <jean@pryen.org>
src: new module astutil.nit

Signed-off-by: Jean Privat <jean@pryen.org>
tests: update highlight and cie because `.` is no more an operator

Signed-off-by: Jean Privat <jean@pryen.org>