refactor(frontends/lean): replace collect_metavars with metavar_closure helper class
feat(library/io_state): add default constructor to io_state
feat(library/unifier): keep normalization result when processing universe level unification constraints
refactor(library/unifier): add option m_discard too unifier, if m_discard == false, then unsolved flex-flex constraints are returned, the unifier also does not apply "last resource" techniques that may miss many solutions.
feat(frontends/lean/placeholder_elaborator): perform class-instance resolution in a completely independent unifier object, it also triggers the resolution when expected type does not contain metavariables, closes #175, closes #173, closes #68