Added type checking for 'Value' subtypes.
Added extra test for variable redeclares: if name equals but type doesn't it should still fail.
Added checking if identities are declared before they are used.
Reordered the methods within the TypecheckerVisitor
Added tests for boolean operators, and extracted superclasses to avoid duplicate code.
Added tests for integer operators.