Tools: add new gradle-test module to root pom.xml
Fix maven tests
Inline checkbox in BytecodeToolWindow
Wise exception propagation for inlines errors
Minor in JS backend: made stable order of function parameters for captured variables.
JS backend: added tests which pass an extension lambda to native code and visa versa.
Added workarounds in some tests because Rhino wrongly implicitly converts first parameter of `Function.call` to `Object`. But it's contradicts to ES5 specification(par. 15.3.4.4).

(#KT-4238, #KT-4345) In progress
JS backend: switch to use `Function.call` for calling extension lambdas and local extension functions.
Main reason for this change is (simple) interop with native code when pass extension lambda to or from native code.

(#KT-4238, #KT-4345) Fixed
KT-4388: Unclear warning for inline function

  #KT-4388 Fixed
Gradle: set output directory to tmp/kotlin-classes to exclude it in IDE.
This is a temporary workaround: should be removed when Android Studio will get excluded output directories from Gradle Model (see AndroidContentRoot.java:35)
 #KT-4507 Fixed
Fixed assertion error for incomplete code.
Minor in JS backend: added regression tests.

#{KT-2219, KT-2470, KT-2507, KT-2222, KT-2995, KT-2221} Obsolete
Sort out "isSpecialAnnotation" method logic

Remove duplicate method, include all needed annotations (seems that some of
them were forgotten in either of the two methods)
Refactor KotlinJvmBinaryClass, VirtualFileKotlinClass, etc.

VirtualFileKotlinClass now reads its header and name on creation. This is not
lazy enough and may be slower in some circumstances, but has the following
advantage: if anything is wrong in the header, a VirtualFileKotlinClass
instance will not be created at all, making it nearly impossible for the client
code to operate on invalid data causing all kinds of exceptions
Make KotlinBinaryClassCache thread-local
Add regression tests for obsolete issues

 #KT-2592 Obsolete
 #KT-2768 Obsolete
Android tests: revert sdk version to 4.1