refactor(kernel): define extension_context API for normalizer_extesions and macro_definitions

A particular macro definition may use the extra information to retrieve information necessary to expand/type a given macro application. Example: it may need to invoke whnf.

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(kernel/type_checker): preserve bound variable name when inferring type of a lambda expression

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(kernel/type_checker): handle ensure_pi when whnf is a meta application

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