Fix kind inference to actually work; start work on modules
Fix kind inference when multiple types have the same name
Better to do it in the types of the constructors too
Somewhat functional modules