Bug Fix: KT-4613

Fix replace with infix function intention to be inapplicable in the
case of package function calls, such as “kotlin.io.println(“”).”
ErrorClassDescriptor moved to ErrorUtils
TypeConstructor's equality for classes relies on FqNames

This is needed because different modules/libraries may define classes with the same FqNames, which may be identical or slightly different.
 Such classes must be considered equal, because your dependencies may rely on different packagings of the same codebase, and the classes there will be distinct though identical
  (think intellij-core vs idea-full).
Error types should not be compared by FqName
Enabling creating different descriptors for different Java classes
 Merge PR#471: Bug Fix: KT-4613
Simplify logic in ReplaceWithInfixFunctionCallIntention
Use HintManager instead of JBPopupFactory to notify of intention failure
Don't allow fake override to inherit implementation with wrong return type

 #KT-4763 Fixed
Don't report "cannot infer visibility" on property accessors

If the diagnostic is already reported on the corresponding property, no need to
report it again for accessors
Render the descriptor in "cannot infer visibility" message

Otherwise it's unclear what member is problematic if it's a fake override
(because the diagnostic in that case is reported on the whole class)
Prohibit implicit overrides with lesser visibility

A non-abstract super-declaration is allowed to stand as 'an implementation' of
a fake override only if its visibility is not less than visibilities of all
other super-declarations

 #KT-2491 Fixed
Minor, fix "visibility modifier" positioning strategy for objects

It's not reproducible at the moment, but will matter if more diagnostics use
this positioning strategy
Minor, don't create unnecessary map in OverrideResolver