Shorten references: Do not lookup packages when searching for conflicting declarations

Minor: use JetTreeVisitor
Minor: JavaCopyPastePostProcessor -> ConvertJavaCopyPastePostProcessor for clarity
Copy paste: annotations for IDEA classes and corresponding changes in ConvertJavaCopyPastePostProcessor
Kotlin code style: keywords on new line
Fix JetSimpleNameExpression#getReceiver

Correct behaviour for unary, binary expressions and type references
Add instanceof checks in TipsManager so it's clear it only takes care of certain types of JetSimpleNameExpression
Refactor: move utilities to a separate file
Refactor: introduce JetReference, rename: JetPsiReference -> AbstractJetReference

Add resolveToDescriptors() to JetReference trait
Rewrite JetPsiReference to kotlin
Refactor: unite two hierarchies or reference, use common code across all references

Jet*Reference#getTargetDescriptors() no longer returns nullable value (convention is dropped)
Use ResolvedCall#getCandidateDescriptor() instead of ResolvedCall#getResultingDescriptor() because unsubstituted descriptors are expected
Add JetReference#resolveMap() function
Refactor: rewrite JetReferenceContributor to kotlin

Add additional utilities to track what psi elements are capable of holding references
Insert imports on copy/paste

Introduce KotlinCopyPasteReferenceProcessor