Add support for boolean expressions
Use proper returns in NodeVisitor pattern
Add isAlwaysX methods to NodeType
Add optimization passes to compiler