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(“”).”
Move JvmMethodSignature to frontend.java
Signature comparison used to find super functions in SignaturesPropagationData

 #KT-4509 Fixed
Minor. More specific return type
Make JetSimpleNameExpression abstract, create subclasses for each element type

It's not a good practice to have one PSI class to correspond to several element types
Make JetReferenceExpression an interface
Rewrite JetSimpleNameExpression and inheritors to Kotlin
Make JetSimpleNameExpression a trait
Make JetSimpleNameExpression#getReceiverExpression extension function and move it to util class
Stubs for JetImportList
Stubs for JetImportDirective
JetTypeParameterListOwnerStub#getTypeParameterList by stub
JetFile#getImportList() and JetImportList#getImports() by stubs
Stubs for JetModifierList
JetDeclaration#getModifierList() by stub

JetClass#getPrimaryConstructorModifierList() by stub
Stubs for JetTypeConstraintList
JetTypeParameterListOwnerStub#getTypeConstraintList() by stub
Minor: make JetTypeElement an interface
Stubs: reduce the amount of boilerplate code

Extract a common type for placeholder stub elements
Introduce helper method to get stub or psi children as list

Add ArrayFactory to JetStubElement
Remove redundant array factories