fixed type checking rule for let-body expression
implemented type checking for type declarations, it is quite complex and I don't know if it could work
renamed type_binding to type