feat(util/list): add map2 for list<T1> -> list<T2>, where T1 and T2 may be different, we still keep map because compiler can automatically infer all template arguments, this is not the case for map2

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

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(kernel/expr): improve get_app_args interface

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(kernel/inductive): finish inductive datatype declaration validation

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

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