JS Backend: made JsInvocation arguments modifieable
JS Backend: made JsBlock statements list modifieable
JS Backend: made JsNameRef name modifieable
JS Backend: made JsScope hasOwnName method public
JS Inline: added inlining context utilities
JS Inline: Added invocation utils
JS Inline: create JsInliningContext per function processed by JsInliner
JS inline: alias arguments and local variables
JS Inline: support function literals with captured parameters
JS Inline: replace returns with result variable assignment and break
JS Inline: support inline extension functions
JS Inline: check if expression need to be aliased
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: inline local functions
JS Backend: save local and literal functions 'local' status in AST

Reason: to distinguish local functions,
when cleaning up after inline.

Unreferenced local functions can be removed.
JS Inline: identitySet helper function
JS Inline: common reference utilities for cleaning up after inline
JS Inline: remove unused local function instances
JS Inline: remove unused function literals and local functions