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: added JsVar assignment inline
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 visitor
Inline Lambdas
JsInline: inline after AST is translated