Basic AST

The idea is that differentiating between reference types and value types instead of references types and list of special-cased types makes things _slightly_ more regular. This way, there are no "special" types from a past-lexer point of view.

I left a bit of place, because I had a few additional flags in mind which we will likely need.