Introduce ResolutionFacade to be used by plugin code instead of resolve session

Do not expose ResolveSessionForBodies where possible
Define API of ResolutionFacade, similar to what ResolveSessionForBodies has
JetElement#getLazyResolveSession returns ResolutionFacade
Call sites to be updated later
Minor: move resolution utilities to a separate file
Refactor: Introduce JetDeclaration#resolveToDescriptor utility
Refactor: Introduce JetElement#resolveToElement utility
Refactor: Introduce DeclarationDescriptor#module utility
Refactor: Introduce JetElement#getModuleDescriptorForElement()
Rename: AnalyzeExhaust -> AnalysisResult
Minor: reorder functions
Rename: resolveToElement() -> analyze
Rename: getModuleDescriptorForElement -> findModuleDescriptor
Refactor: Introduce JetElement#analyzeAndGetResult() utility
Rename: JetElement#getBindingContext() -> analyzeFully
Rename: JetElement#getAnalysisResults() -> analyzeFullyAndGetResult
Minor: Inline the only usage of getAnalysisResultsForElements()
Rename: JetElement#getLazyResolveSession() -> getResolutionFacade

Rename local variables and fields of type ResolutionFacade
Add analyzeFullyAndGetResult to ResolutionFacade
Minor: comment
Refactor: inline AnalyzerFacadeWithCache#getContextForElement