Added newtype to the lexer
Added the Newtype struct and added a field for newtypess to Module
Implemented parsing of newtype
Renaming of Newtype implemented
Added constructor_name field to NewType and changed constructor_type to Qualified<Type>
Added typechecking for newtype
Fix typechecking not always substituting the type
Added compilation of newtype constructors

This currently requires that prelude is imported if a newtype constructor is used as a function since it will then be translated into the 'id' function.
Changed the typecheck error handling to store all errors instead of failing

Currently typecheck still calls fail! if any errors are found since many tests depend on it failing if an error is found.
This way of handling errors may still need to be tuned since after an error is found, typechecking still continues which could possible cause a chain reaction causing more errors than necessary to be reported. For now this seems like an improvement.
Changed OpApply location to be at the operator
Changed sep_by_1 to backtrack once when done, letting the callee use lexer.next()
Parse imported names when in import declarations
Changed most use of InternedStr to Name where name lookup is concerned

Tests are currently failing since there was much reliance on uid == 0 for global bindings, types etc.
Global names have no longer always uid == 0

uid == 0 is reserved for the Prelude to allow code generation and translation to have a simple construction of True, False etc.

For all other modules a single uid is defined for the global bindings in that module.
All instances and classes use the same uid as the one defined for the class in question. This is not fully implemented in the Renamer as of now
Fixed typechecking only looking for classes in the current module
Instance functions correctly have the same uid as the class they implement
Added handling of imported names in renamer.rs
Reused the import_globals function for Module<InternedStr>