JS backend: added NotNull annotation
JS inline: added deepCopy() method to JS AST nodes
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 backend: made JsInvocation arguments modifieable
JS backend: made JsBlock statements list modifieable

Inliner should be able to add statements of inline function to JsBlock
JS backend: made JsScope hasOwnName method public
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