Imports on copy/paste: Check whether import is needed before showing the user

Minor: rename ImportInsertHelper.doNeedImport -> needImport
Imports on copy/paste UI: do not show misleading icon in dialog
Implement navigation to references from Call Hierarchy view
 #KT-4518 Fixed
Tests: add complex tests for references to libraries

These tests check that that complex references (var p by delegate, for in collection, array[index]) are resolved correctly when target descriptors have type parameters
See 41f9dcba911959ddd8220309ea89173f04222c18

 #KT-4505 Fixed
ExternalAnnotationResolver is enough to look for external annotations
OBJECT_FQ_NAME moved to DescriptorResolverUtils
resolveCompileTimeConstantValue() rewritten to Kotlin
getKotlinBuiltinClassDescriptor() moved to DescriptorResolverUtils
AnnotationLoadingUtil created. Relevant code/constants moved there
Utilities moved closer to their usages and rewritten to Kotlin
JavaDescriptorResolver always uses lazy mode
Old implementation of JavaDescriptorResolver deleted
DescriptorSearchRule removed
JS backend: removed the unnecessary main function from some tests.
JS backend: rename test mangling -> manglingStability. And make it independent of structure of generated code.
JS backend: fixed using the stable mangling for extra cases.
JS backend: add workaround for mangling Any methods(equals, hashCode and toString) always.
JS backend: fixed name clash when override native class.
JS lib: drop es5 shims.
Fixed problem with overriding method with non-trivial raw type (when erased type parameter has upper bound)

Also added cases for the code which was changed.