Basic AST

I'm not sold on the idea of not differentiating between statements, lvalues and rvalues. As it is right now, `x = 0 = 1 = 2 = 3` could produce a perfectly valid AST. I'd personally prefer if the type hierarchy around the AST would mirror its syntactic / semantic limitations. (I'm not sure if that's just not implemented yet or if you were planning on keeping it this way)