Stubs: reduce the amount of boilerplate

Extract a common type for placeholder stub elements
Stubs for JetNullableType
Stubs for JetTypeReference
Stubs for Jet user type draft
DRAFT: get receiver and return type by stub
Get type reference for value parameter by stub
Add hasBlockBody property for function stub
hasBlockBody for JetNamedFunction using stub
Add hasBody to function stub
REVIEW: Refactor: add hasBody to JetDeclarationWithBody interface

Use it where appropriate
hasBody for JetNamedFunction via stubs
Rename: AnnotationStub -> AnnotationEntryStub
Stubs for JetAnnotation
JetTypeReference#getAttributeAnnotations via stubs
Fix KotlinImportOptimizer after change to imports
DRAFT: JetTypeReference#getTypeElement() by stubs
More specific return type for JetUserType#getReferenceExpression
Make JetSimpleNameExpression#isImportDirectiveExpression extension function and move it to util class
JetElementImplStub#getReferences implementation
DRAFT: stubs for name reference