Move errors into separate module.
Add rest of contexts needed for type inference.
Export list for Scheme module.
Make the unify function work with new error data type.
(Part of) type inference for expressions and also kind checking.