Fix incorrect diagnostic message for CONFLICTING_OVERLOADS

- the member and the container were mixed up
- don't output "defined in" part of the message, because we tell later where
  it's already defined in
- fix an instability of the diagnostic order in OverloadResolver by using
  LinkedHashSet
Render FQ name of default package as "root package" in OverloadResolver
Don't print descriptors' toString() in diagnostic messages

Use DescriptorRenderer.TEXT instead, it doesn't print the debug information
Refactor OverrideResolver and OverridingUtil

Fix warnings, simplify code. Untangle a very complex code related to
diagnostics on multiple default values and different names of parameters in
supertypes; fix a bug there, add test
Move some utilities from OverridingUtil to OverrideResolver

OverridingUtil will be present at runtime and we should strive to minimize the
size of our runtime classes

Also add a comment to getOverriddenDescriptors()
Minor, provide a nicer API in OverrideResolver for plugin
Fix "Cannot infer visibility" for fake overrides

 #KT-4785 Fixed
Get rid of poorly named NotInferredVisibilitySink

Also make TraceBasedErrorReporter invoke OverrideResolver to report "cannot
infer visibility", because there's some additional logic there
Sort out renderers for diagnostics

- change NAMED to be Renderer<Named> and render Named's name. It was used in
  multiple places with arbitrary arguments, not only Named: change renderers in
  those places to TO_STRING
- add STRING, which is Renderer<String> and renders string itself. Change all
  places where strings were used with either TO_STRING or NAMED to STRING
- change NOT_AN_ANNOTATION_CLASS diagnostic to be reported on descriptor, not
  any string
- change "unused variable/parameter" diagnostics to be reported on
  VariableDescriptor, not Object
Add positioning strategy for diagnostics on illegal fake overrides

"funcitonTypes.kt" test data file was changed because now that there is a
positioning strategy, it takes the liberty of filtering out those diagnostics
that were reported on syntactically invalid elements
Fix "cannot override invisible member" diagnostic message

Fix "cannot has", delete "in class ..." as it's already present in the message
(function ... defined in class ...)
Fix "name in constraint is not a type parameter" diagnostic message

TO_STRING renderer was used for PSI elements, so things like "CLASS", "FUN"
were displayed in the message
Log.warn when descriptors reach TO_STRING diagnostic renderer
Report "cannot infer visibility" for delegated members