feat(kernel/inductive): track when K-like reduction can be used
feat(kernel/inductive): K-like reduction in the kernel

Given (H_1 : a = a), we have that
      eq.rec H_2 H_1
reduces to H_2

This is not exclusive to equality.
It applies to any inductive datatype in Prop, containing only one
constructor with zero "arguments" (we say they are nullary).

BTW, the restriction to only one constructor is not needed, but it is
does not buy much to support multiple nullary constructors since Prop is
proof irrelevant.
refactor(library/logic): use new K-like reduction to simplify some proofs
refactor(frontends/lean/util): add auxiliary function
fix(frontends/lean/elaborator): incorrect type information being reports in lean-mode, fixes #241
fix(frontends/lean/elaborator): incorrect type information being reports in lean-mode, fixes #241