Changed type variables to internally hold InternedStr

InternedStr helps with error messages since the actual variables that are declared can be used.

Since the int that were originally used were also used to determine to determine which variable was created first an 'age' field were added to preserve this usage. This field should be possible to remove with some changes to the constraints handling (notable when adding other Assemblys/Types trait objects throgh add_types)
TypeDeclaration and SuperCombinator use Qualified<Type>
Added Qualified to the types in Constructor and DataDefinition

DataDefintions should support Qualified types any way and it is easiest when  looking up types if we are consistent with Qualified so Constructors gets it as well.
Changed Types::find_type to return a Qualified<Type>
Fixed typevariable collisions when typechecking with multiple TypeEnvironments

Previously, doing the typechecking with multiple environments could cause collisions. For instance, when typechecking a module the function sum could get the type 'sum :: Num 3 => [3]' which when later on another environment was created the variable 3 would be reused and with 'sum' imported through the 'add_types' function the variable 3 would already have the 'Num' constraint causing the typechecker to fail if this was not expected. By storing the constraints with the type we can add the constraints to the environment as the imported binding is instantiated with fresh variables.
Added comments and removed some useless stuff
Moved all 'Type' types into the 'types' module

There should be no reason to rely on module.rs if one only needs the 'Type' types
Added README and LICENSE