Create KotlinClassFileIndex
Introduce VirtualFileFinder interface

Provide different implementations in Cli and Ide
FileViewProviderFactory and JetClsStubBuilderFactory
DIRTY: JavaClassResolver uses VirtualClassFinder

HACK: determine whether fqname is a name for class contained in class or namespace based on virtual file name
Use stubs in getParent for stubbed psi
Provide sources of depedency in AbstractJavaWithLibCompletionTest

Test compiles dependency before running
Add isCompiled property to JetFile
DIRTY: don't use getNamespaceHeader
DIRTY: use VirtualFileFinder in JavaNamespaceResolver
DIRTY: AnnotationDescriptorDeserializer uses VirtualFileFinder to find packages
Assert that we are not trying to switch Psi to Ast for compiled files
REWORD: Make test check filtering for already imported package
Introduce TopLevelDeclarationIndexUtils, simplify code for completion and autoimports of top level functions and extension functions

Move and inline unrelated utilities in JetShortNamesCache
Stubs for top level object declarations, simplify completion
Change AbstractJavaWithLibCompletionTest so that it doesn't invoke compilation if dependency jar is already present
Rename directories containing dependency sources from *Sources to *Src
Do not try to adapt java completion as kotlin completion

Test that checks kotlin completion for java classes from libraries
Rename short name indices
Introduce JetFqNamedDeclaration, use it instead of JetNamedDeclaration where appropriate

Remove most of the usages of JetPsiUtil#getFqName(JetNamedDeclaration)
Use stubs to provide fqNames for Psi
Prevent toString() on JetPsi from mutating

Calling getNode() get cause switch to ast from stubs