Allow inSourceMap to be a generated JSON source map instead of just a file name
v2.2.5
Fix compressing `do {...} while (false)`

It's not safe to transform it to {...} because the body might contain
`break`.  The solution could be more elaborate (detect if body contains
`break`) but I don't think it's worth the trouble.

Close #129
Add license

Close #131
Compress boolean constants after evaluation

Close #137
Drop last `default:` if it's the last branch and empty

Close #141
Add `--screw-ie` option

For now the implication is that UglifyJS will not leak a function
expression's name in the surrounding scope (IE < 9 does that).

(ref. mishoo/UglifyJS#485)
Fix reordering comparisons

Close #143
Read the entire STDIN.

The problem with reading synchronously from /dev/stdin is that you can get a
spurious EOF when the input buffer is empty, even if more content is coming. Now
STDIN is read from a loop, and only stops polling when all input has been read.
This fixes #70 #85 and other errors related to parsing large files on STDIN.
Merge pull request #146 from mbostock/read-all-stdin

Read the entire STDIN.
Disable `unsafe` by default

Close #147
Support mangling toplevel names

Close #127
Merge pull request #125 from devongovett/master

Allow inSourceMap option to be a generated JSON source map
Keep legit code working even when --screw-ie is not passed.

Previously:

    Without `--screw-ie`, UglifyJS would always leak names of function
    expressions into the containing scope, as if they were function
    declarations.  That was to emulate IE<9 behavior.  Code relying on this
    IE bug would continue to work properly after mangling, although it would
    only work in IE (since other engines don't share the bug).  Sometimes
    this broke legitimage code (see #153 and #155).

    With `--screw-ie` the names would not be leaked into the current scope,
    working properly in legit cases; but still it broke legit code when
    running in IE<9 (see #24).

Currently:

    Regardless of the `--screw-ie` setting, the names will not be leaked.
    Code relying on the IE bug will not work properly after mangling.
    <evil laughter here>

    Without `--screw-ie`: a hack has been added to the mangler to avoid
    using the same name for a function expression and some other variable in
    the same scope.  This keeps legit code working, at the (negligible,
    indeed) cost of one more identifier.

    With `--screw-ie` you allow the mangler to name function expressions
    with the same identifier as another variable in scope.  After mangling
    code might break in IE<9.

Oh man, the commit message is longer than the patch.

Fix #153, #155
Don't print the warning on parse error, just throw a JS_Parse_Error.

Fix #159
Add support for enclose option. Closes #139.
renamed --screw-ie to --screw-ie8, documented it in README.md, indicated it doesn't break IE9+
Merge pull request #163 from mzgol/screw-oldie

renamed --screw-ie to --screw-oldie, documented it in README.md, indicat...
uglifyjs binary: Make read_whole_file async and don't attempt to read STDIN synchronously.
Output, to_ascii: Escape non-ascii chars with \xnn instead of \unnnn whenever possible.