refactor(util/name_set): implement name_sets using red black trees instead of hashtables

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
chore(tests/library): enable old tests

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

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(kernel): incorrect optimization in max_sharing_fn class

The resultant expression may failed to be fully shared.
Add an example that demonstrates the problem.

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

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(kernel/max_sharing): add method already_processed

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(kernel/type_checker): remove dead code, add basic whnf procedure

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