refactor(library/unifier): allow general 'unify' procedure to take an initial substitution as argument
feat(frontends/lean/class): accept only inductive datatypes (and records) as classes
feat(frontends/lean/builtin_cmds): add 'print classes' command