Fixed wrong annotations for android.os.Parcel

Parcel.readString() and Parcel.readStrongBinder() were wrongly annotated to return NotNull. In fact they both can return null and this is often used in Android development.
Fixed wrong annotations for android.content.ComponentName

ComponentName.getClassName() and ComponentName.getPackageName() cannot return null. Also it's not possible to create ComponentName with null packageName or className
Added more annotations for android.os.Message

Message.obtain() (all overloaded variants) never return null.
Merge pull request #307 from eterverda/master

Fixed wrong annotations for android.os.Parcel, android.content.ComponentName and android.os.Message
Remove unneeded asserts from JavaSupertypeResolver

Don't do anything special if a Java class happens to extend jet.JetObject: it's
not a Kotlin class and we should collect all its supertypes correctly
Extract isConstructor() check
Implement call hierarchy
Call Hierarchy: Add support of local declarations
Use KotlinCallHierarchyNodeDescriptor for Kotlin declarations only
Separate tree structures for local and non-local root declarations
Profiler uses loggers

This allows us to leave profiler calls in production code
Using lazy resolve when building light classes
Force-resolve only relevant declarations
Assertion messages added
Support recursion-tolerant nullable values
All other values are made recursion-intolerant
Recursion-tolerant notnull lazy values
Forced resolution of all contents enhanced
Field made final
Common logic extracted from lazy type implementations
Use wrapping instead of copying when creating nullable/non-null types

 Why wrapping is better:
1. It's requires less memory: a copy has many fields, while a wrapper has only one
2. It preserves laziness of types