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