Add type system and refator for having only epression
- Introduce AST-based visitor and resolver in middleend - Update guard field and parser to use AstNode<Expr> - Remove backend variable_resolution and adjust exports - Expose middleend in the library