Fix #825: ParamDefs of tailrec methods should be mutable.

Considering them as immutable was fine for the purposes of
JSDesugaring, but not for the inliner, causing subtle bugs.

This commit simulates the binary compatibility scenario by
not changing the compiler, and relying on the deserializer
to apply hacks to fix old IR. A follow up commit will
update the compiler to emit correct IR directly.
Make ParamDefs of tailrec methods mutable in the compiler.
Fix desugaring in an obscure case with while(true).
Make methods of j.l.Math optimizable.

* Avoid to use native JS functions when possible: the optimizer
  does not know about these functions and cannot reason about
  their behavior.
* Add @inline to all simple methods.
* Make PI and E 'final val', because that's what they are as Java
  static final fields + it is better optimized.
Rerun a dce after the inliner.
Merge pull request #832 from sjrd/optimizable-jl-math-methods

Make methods of j.l.Math optimizable.
Merge pull request #830 from sjrd/fix-desugar-var-while-true

Fix desugaring in an obscure case with while(true).
Merge pull request #829 from sjrd/mutable-param-defs-alt

Fix #825: ParamDefs of tailrec methods should be mutable.
Merge pull request #833 from sjrd/dce-after-inliner

Rerun a dce after the inliner.