JS backend: added deepCopy() method to JS AST nodes
JS inline: removed legacy inline logic
JS inline: save inline status during translation
JS inline: added InlineableResult
JS inline: added FunctionInlineMutator
JS inline: added JsInliner
JS inline: save static ref to JsFunction in JsName
JS inline: collect defined functions
JS inline: inline function calls
JS inline: run JsInliner after AST is built
JS inline: added invocation utils
JS inline: added inlining context utilities
JS inline: create JsInliningContext per function processed by JsInliner
JS inline: alias arguments and local variables
JS inline: replace returns with result variable assignment and break
JS inline: support inline extension functions
JS inline: default parameter processing for inlined functions

When function is inlined initializers
for default parameters can be:
1. removed  if argument is not `void 0`
2. expanded otherwise
JS inline: prevent inliner from inlining multiple subexpressions at once
JS inline: support inline local functions
JS inline: identitySet helper function