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