Discover class objects for light class generation in the compiler

 #KT-3337 In Progress
LightClasses: class object's property getter unresolved in Java, but compiles OK
Class object FqNames indexed properly

#KT-3337 In Progress
LightClasses: class object's property getter unresolved in Java, but compiles OK
Tests for Java name resolution in the IDE

#KT-3337 In Progress
LightClasses: class object's property getter unresolved in Java, but compiles OK
PsiJetStubWithFqName interface extracted
Create packages for surrounders for expression and for statements
Add base class for expression surrounders
Check that found expression has correct start and end offset
Add parentheses surrounder
Add string template surrounder
Move getExpressionType method to utils
Add when surrounder
Base class for surrounders for statements
Add try-catch, try-finally, try-catch-finally surrounders
Add surround with function literal
Generate all surround with tests to one file
Add InTextDirectivesUtils.findStringWithPrefix()
Do not apply ExpressionSurrounders for expressions with Unit type and for call expressions inside qualified expression
Implementations of descriptors moved to a separate package
NamespaceDescriptorParent moved to impl
Environment with Kotlin descriptors in marker provider.

EA-41980 - assert: SignaturesPropagationData.getSuperFunctionsForMethod