remake the type inferer
The type inferer has to be completely overhauled. The current one doesn't work properly, has unreadable code, is hard to debug and it will be hard to extend its functionality. Currently it is based on the hindley-milner typesystem. Maybe this should be changed to something like system f. The current solution has particular problems with generating new variables. It will regularly substitute variables that shouldn't be, for many reasons, some I couldn't identify. While many of the problems could be fixed, I deem it more productive to redo the entire thing. Therefore typeinference was temporarily disabled in the recent commit e7712923.