KT-3893 Fixed

- Added modifier check for parameters in constructors.
- Added modifier check for parameters in functions.
- Added modifier check for parameters in try/catch
Merge remote-tracking branch 'origin/pr/303'
Constants moved to the top
Using annotations from reexported libraries
JS backend: cleanup -- drop NUL symbols
JS backend: fixed wrong behavior when using nullable type in string template.

(cherry picked from commit 3a16e95)
JS backend: refactoring -- prepare to fix KT-2696
JS backend: support object declaration in other declarations.

#KT-2696 fixed

(cherry picked from commits 8931d13, 627b100 and f6b8686)
JS backend: added @lends annotation for namespace members (ecma5 only)

(cherry picked from commit 9ae9a60)
JS backend: ensure enumerability for object literal properties.
Namespace lends annotation improved (root).

(cherry picked from commit 246c001)
JS backend: don't create namespace entry if it is empty.

(cherry picked from commit 79d9ef4)
JS backend: don't create local var if open class is not referenced from another open class.

(cherry picked from commit fdf650f)
JS backend: fixed closure variables in object which declared in another object in method.

(cherry picked from commit f3e8325)
JS backend: fixed wrong @lends annotation when using nested packages.
JS backend: removed unnecessary code -- the "toStringHack" Role

(cherry picked from commit 902d323)
JS backend: elvis operator must compare value with undefined.

(cherry picked from commit 3978a8e)
JS backend: improve and move getQualifiedReference function from TranslationUtils to TranslationContext and StaticContext.

(cherry picked from commit fa3db43)
JS backend: generate ref for not public api open classes as ref to internal class pool (_c var), but not to namespace definition.

(cherry picked from commit fa3db43)
JS backend: refactoring 'is' operator translation.
JS backend: change name mangling -- right now before indexing we sort functions by Visibility and Modality.

(cherry picked from commit 7620a07)