JS backend: made some asserts in AliasingContext and InnerDeclarationTranslator more informative.
JS backend: minor refactoring in LiteralFunctionTranslator
JS backend: refactoring LiteralFunctionTranslator -- make possible to store translation state and create an instance for each translation instead of one instance for all translations.
Introduced DefinitionPlace class and make creating a new definition place more safety.
JS backend: Minor changes -- added @NotNull to some methods of InnerDeclarationTranslator.
JS backend: refactoring:
    - make static LiteralFunctionTranslator#translate;
    - use TranslationContext#define instead  of  direct use DefinitionPlace.
JS backend: minor refactoring -- make LiteralFunctionTranslator stateful.
JS backend: fix recursive closure local function by inner function or lambda.

 #KT-4257 fixed
JS backend: minor -- move test for KT-2388 to ClosureTest.
JS backend: fix closure `this` in extension (literal) function.
JS backend: introduce constants for default test package(`foo`) and default test function(`box`).
JS backend: fixed getting qualified reference as JsNameRef for PackageFragmentDescriptor.
JS backend: use name of containing declaration when naming local and literal functions.
JS backend: introduce the stable mangling for functions which belong to the public API or not final.
JS backend: fix tests after mangling.
JS backend: dropped unnecessary tests which checked implementation details of kotlin js runtime.
JS stdlib: added missed tests for Map and fix HashMap implementation.
JS stdlib: added missed tests for Set and fixed HashSet implementations. Implemented Set::iterator, AbstractCollection::removeAll, AbstractCollection::retainAll, AbstractCollection::containsAll.

#KT-4390 fixed
Stdlib: enabled test List::withIndices.
Js backend: minor fix in test `closureInNestedFunctions`
JS stdlib: drop unnecessary code.