JsInline: added argument aliasing to Inliner
JsInline: replace return statements with assignment and break
JsInline: inlined function nameref renaming
JsInline: added JsName static ref for function
JsInline: added class InliningResult
JsInline: JsInliner -> FunctionToBlockMutator
JsInline: parameter lambda inline
JsInline: made break labels 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.