Make let, const, and class symbols be declared in a block scope.
Piggy back on existing catch symbol implementation to get block-aware mangling working
Make sure unused block-scoped declarations can be dropped
Kill off block declarations in dead code without looking back
Don't eliminate a block if it has a block-scoped declaration
Remove silly empty anonymous blocks left over from drop_unused
AST_Toplevel now gets to call drop_unused too, since block-scoped variables aren't global!
refactor a little
don't consider block declarations global
Discarding unused function arguments affects function.length, which can lead
to some hard to debug issues. This optimization is now done only in "unsafe
mode".
Fix#121