JsInline: added JsName static ref for function
JsInline: JsInliner -> FunctionToBlockMutator
JsInline: added class InliningResult
JsInline: parameter lambda inline
JsInline: return statement counter
JsInline: changed -- now break labels are optional
JsInline: removed unused variable
JsInline: removed result expression initialization to undefined
JsInline: renamed inlining related classes
JsInline: extracted processing of assignment call to separate method
JsInline: do not replace return with assignment when return expression is null
JsInline: added JsInliner (inlining entry point)
JsInline: inline after AST is translated
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
Block: 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