feat(kernel): add binder annotations (implicit, cast)

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(kernel): use structural hashing in type_checker and converter

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(library/kernel_bindings): expose expr_binder_info in the Lua API

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(library/kernel_bindings): expr Lua API

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(util/script_state): use recursive_mutex instead of mutex

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