refactor(library/tactic): add auxiliary module 'library/tactic/elaborate'
feat(library/tactic/elaborate): do not invoke unifier if no constraints were generated during elaboration
refactor(library/tactic): move 'unfold' tactic to separate module
fix(frontends/lean/elaborator): error localization for 'expr_to_tactic' failures
refactor(library/tactic/unfold_tactic): use new 'tactic.expr' to implement 'unfold' tactic

This change also enabled us to remove hacks used in the tests modified
by this commit.
feat(frontends/lean): automatically open 'tactic' namespace (if it is not already open) in 'by' and 'begin-end' expressions
feat(frontends/lean/info_manager): add proof_state info
feat(library/reducible): expose 'memoize' flag
fix(kernel/type_checker): propagate 'memoize' flag to default_converter
feat(frontends/lean): add 'info' tactic for producing PROOF_STATE info for emacs mode
feat(frontends/lean): automatically add 'info' tactic in begin-end blocks

Actually, the tactic is only added when Lean is in collect-info mode.
fix(library/tactic): add missing file
fix(frontends/lean/pp): avoid unnecessary parentheses when pretty printing delimited notation
fix(frontends/lean/info_manager): use fresh formatter displaying each info object

The formatter may cache results.
doc(emacs/README.md): fix typo

[skip ci]
feat(frontends/lean): add 'print definition' command