JsInline: removed old inline logic
JsInline: added class CloningVisitor
JsInline: added class RenamingVisitor
JsInline: added class NameCollector
JsInline: added class ReturnCounter
JsInline: added class ReplaceReturnVisitor
JsInline: added class FunctionInlineMutator
JsInline: added JsName static ref for function
JsInline: added class InliningResult
JsInline: made break labels optional
JsInline: added JsInliner (inlining entry point)
JsInline: added class FunctionCollector (collects inline functions)
JsInline: JsInliner recursively processes AST
JsInline: save block contexts to stack

Reason: need to be able to insert inlined body
before current statement (that might be
distant parent of node currently being
processed)
JsInline: use SmartList instead of SingletonList when `new JsBlock(statement)` called

Reason: it is ok to insert in a block after AST was created during translation.
For example, inliner can insert inlined body in such block.
Thus immutable SingletonList isn't appropriate.
added getCurrentNode() method to context
Removed nested inlining
Inline Lambdas
JsInvoc
JsInline: inline after AST is translated