Lexer & parser update

- support for generics and begin/end token IDs
- type declaration parsing
- variable definition parsing
- do-while and for statements
- proper expression ending check