Fix #1397: Better IR-checks for exported methods

Added checks:
- Exported name does not contain `__`
- Exported method is not static
Merge pull request #1398 from gzm0/ir-check-export-name

Fix #1397: Better IR-checks for exported methods
Fix #1399: Propagate closure params in JSDesugar environment
Remove RoughClassInfo.

The only usage of rought info was in the Rhino environment,
which is super slow anyway. So it might as well use the full
info.
Remove ClassInfo.name.

It can always be recovered by decoding the encodedName, and is
virtually never useful anyway.
Move OptimizerHints from the Infos to the Trees.
Add abstract methods to the trees in the IR.
Give separate info to each exported method/property.

Previously, the info of all exported methods and properties
were gathered in one single pseudo-method. Now, each exported
method/property has its own exported method in the infos
(under its exported name).

For exported constructors, they are all gathered in one single
pseudo-method called __exportedInits.
Merge pull request #1400 from sjrd/clean-infos

Fix #1395: Clean infos
Merge pull request #1401 from gzm0/fix-desugar

Fix #1399: Propagate closure params in JSDesugar environment
Fix #1402: Handle Debugger in Transformers and Traversers
Merge pull request #1405 from gzm0/fix-opt-debugger

Fix #1402: Handle Debugger in Transformers and Traversers