feat(kernel/error_msgs): improve cryptic type mismatch error messages where the types may seem identical because key information is being suppressed

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(*): make sure elaborator and type_checker use the same "rules" for treating opaque definitions

This is a big change because we have to store in constraints whether we can use the "relaxed" rules or not.
The "relaxed" case says that when type checking the value of an opaque definition we can treat other opaque definitions in the same module as transparent.

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
test(tests/lean/run): add more tests sent by Cody

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>