--- REFACTORED ---

* Refactored ProgramFactoryImpl's type-checking

* Added VariableExpression
	This will carry our variables from now on to be used in statements/expressions
	The problem was that the type of a variable can't be checked during parsing
	So when type-checking an expression it will check whether it's of a specific type OR a variable(Expression)

* Adjusted While/If/ForEach/... accordingly.

* Refactored Variable/Expressions to generic types.

* TODO: added remove task to remove unnecessary 'instanceof VariableExpression' fragments.