Their behavior is different in PSI and reflection (two things that this
interface is supposed to unify), so there's no point in making it interface
methods, rather we should just walk supertype hierarchy manually
Also make JavaClassImpl.getSupertypes() invoke PsiClass.getSuperTypes(),
because it also contains java.lang.Object for interfaces, which makes
equals/hashCode/toString appear in interfaces' getAllMethods() as well
This fixes a lot of warnings on mixed Kotlin+Java code about different names
for the same parameter because we always loaded 'equals' parameter with the
name 'p0', whereas in Kotlin we usually name it 'other'