refactor(kernel): start version 0.2, new kernel with universe polymorphism and better/cleaner support for metavariables

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(kernel/level): new universe level datastructure for universe level polymorphism

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
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>
refactor(kernel/expr): add expr constructors, and expression equality test

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(kernel/expr): for_each and find functional objects

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(kernel/expr): for_each_fn, replace_fn, and find_fn without templates

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(kernel/free_vars): cleanup free_vars procedures

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(kernel): cleanup instantiate and abstract procedures, implement update procedures

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(kernel): memory corruption bugs

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(kernel): add formatter and simplify contexts

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(kernel/instantiate): bug in new head_beta_reduce

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(tests/kernel): move tests to new kernel

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(kernel): style warnings

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(kernel): shallow copy procedure

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(kernel): serializer and deserializer

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
test(tests/kernel): adjust expr tests

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
test(util/exception): experiment with exceptions with nested std::function

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