Type: reduced QualType to single Pointer size (eg 32bits on 32-bits system)

This reduces the following object sizes: (on 32-bit system)
SIZE(bytes)        self    total   Qualtype4
    QualType         8        8          4
    Type            16       16         12
    BuiltinType     20       20         16
    PointerType     24       24         16
    UnresolvedType  24     52/104    20(48/88)
    Stmt             8        8          8
    Expr            16       16         12
    IdentifierExpr  28       28         24
    MemberExpr      24       80        20(68)
    Decl            20       20         20
    VarDecl         56       56         48
Decl: removed ArrayList from VarDecl since it's only used for incremental arrays
UnresolvedType: flattened data structure (no more MemberExpr/IdentifierExpr's)
cleanup
Decl: added type to all Decls
Analyser: removed resolveUserType() (not needed anymore)
AST: cleanup printing
TEST: added test for arrays
Type: set CanonicalType early if possible
Parser: fixed assert
TypeChecker: made function private
TESTS: added struct tests, circular
TESTS: added test
cleanup
TypeChecker: refactor, moved checkConversion to ExprTypeAnalyser
Rename: TypeChecker -> TypeResolver
TEST: renamed to proper c2t
AST: clear Identifier's name after being resolved (then use Decl's name)
CodeGen: use Canonical where possible
CGenerator: fixed AliasType of ArrayType