feat(kernel): add difference constraint solver with backtracking support, and justification generation, this solver will be used to check the satisfiability of universe level constraints

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(kernel/diff_cnstrs): copyright msg

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(kernel/expr): adding suport for universe polymorphism, and simplify metavariable representation

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(kernel/diff_cnstrs): missing include

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