Made each generated lambda binding have a unique name
Very simple kind inference done in declarations based on the usage
Improved "has_instance"

has_instance now calls Types::find_instance which returns an instance which matches the typename of the type that is tested. Then the constraints of instance are checked to see that they are valid for the type.
Added do expressions to the syntax
Added Do expressions to the renamer
First draft for typechecking for expression, passes simple tests
Fixed instance lookup for instance in the same module

The type in the instance do not get the correct kind which caused the test to fail. Until proper kind inference is implemented just compare on the names (which should be fine anyway)
Added do expressions completely with some hacks
Setting the kind of the type in instances works for all types
Fixed a couple of warnings