Support :: references to Java instance fields in codegen

 #KT-1183 In Progress
Fail with IllegalAccessException on :: reference to private property

Instead of mysterious NoSuchMethodException
Support 'accessible' for reflected properties on JVM

Calls Java reflection's isAccessible/setAccessible
Construct reflection objects via static factory methods

JVM back-end now generates invocations of these methods instead of
KClass/K*Property/... constructors for two reasons:

1. It occupies less space in the bytecode
2. We can (to some degree) alter the implementation of the factory methods
   without changing the ABI compatibility version
Fix initialization order of KClass field and class object fields
Copy pcollections's HashPMap to kotlin/reflect/jvm/internal

It will be used for caching KClass instances for foreign (Java) classes
Remove unneeded code and beautify HashPMap and its dependencies
Delete unneeded interface dependencies of HashPMap

To reduce class count and to avoid unneeded invokeinterface's
Use pcollections' HashPMap instead of ConcurrentHashMap in reflection
Remove unneeded dependency on ListIterator in ConsPStack
Add JetBrains license to HashPMap, remove obsolete author tags and javadocs
Inline HashPMap entry's getter methods
Add some simple tests on HashPMap
Make KClass instances weak in foreignKClasses
Make intermediate *Impl properties traits, not classes

Otherwise multiple inheritance of classes would be needed to make
implementations inherit correctly for mutable properties
Improve performance of foreignKClasses, add comments
Add NotNull annotations to HashPMap
Make KMemberProperty's T parameter have a non-null bound
Fix KClassOrigin for non-Kotlin classes

Check against presence of KotlinClass annotation
Expose Java reflection objects out of Kotlin ones