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
JS inline: use dfs processing order, as it is independent of declaration order
JS inline: inline simple-return functions directly
JS inline: use inlined function name for inline labels
JS backend test: turn rhino optimization off for stdlib tests
JS backend: added the ability to turn off the inline optimization.
JS backend: added NotNull annotation
JS backend: added @NotNull annotation
JS backend: removed JsBlock toString() truncation

Truncation complicates debugging.
Some inline tests depend on functions strings  comparison.
Code Review: FunctionInlineMutator

1. use renaming context in doReplaceReturn
2. rename doReplaceReturn -> doReplaceReturns
3. added Unit-return TODO
Code Review: use JsInliner.getFunctionContext
Code Review: added documentation to JsInliner
Code Review: moved check* test methods to InlineTestUtils
Code Review: use test directives
Code Review: moved contexts to separate package