Made resulting types dependent on constraints, so that failing constraints cause expressions to have no type.
Added typing rules for unary bitwise and logical operators.
Clean up.
Clean up and fix copy pasta errors.
Added typing rule for lazy and/or.
Added typing rule for if expression.
Fix spacing.
Assignment is an expression.
Undo constructor definition change, produces invalid generated code.
Clean up.