refactoring of user type system

user types now user polymorphic ASTUserType
removed type info
TypeDeclaration is now polymorphic on user types
TypeDeclaration now stores data for declarations of types (instead of typeinfo)
added identifier resolution to ValidationVisitor
added type resolution to ValidationVisitor
FunctionDeclaration parameters now represented as VariableDeclaration's

TODO: tuple to struct conversion seems to be broken