feat(frontends/lean): add option 'pp.purify_locals'
fix(library/tactic/inversion_tactic): bug in name generation
feat(library/tactic): 'exact' tactic report unsolved placeholders in nested expression

Actually, the elaborator is the one reporting the unassigned
placeholders. The 'exact' tactic just makes the request.
To implement this feature we had to extend the elaboration interface
expected by the tactic framework.
fix(linja): incorrect output when maximum number of errors/warnings was reached, fixes #352