Emit serialized IR files instead of .js + .js.map + .sjsinfo.

The ClasspathBuilder automatically expands .sjsir files into their
desugared VirtualScalaJSClassfile version for now. It is left for
a future commit to get rid of VirtualScalaJSClassfile entirely and
have the packager and optimizer work directly on the IR file.
Remove VirtualScalaJSClassfile and use VirtualScalaJSIRFile instead.

Now the various tasks working with a ScalaJSClasspath extract the
information they need from the IR directly, and work with that.
Cache the desugared pieces of classes in the fast optimizer.

This way, info and trees of .sjsir files that have not changed
since the last invocation of fastOptJS need not be reloaded from
disk. Instead, they are kept in-memory. For the trees, the
already desugared is stored (and only pieces actually used).
Merge pull request #511 from sjrd/push-ir-until-linking

Push the IR until linking
Unify partest filter to reuse code when using files and CLI arguments
Fix #500: Avoid removal of duplicate percentage signs by Node.js
Fix #501: Never eliminate ClassData of hijacked classes
Fix #503: Never eliminate RuntimeLong.fromDouble
Fix #504: Fix typo in java.lang.Class (getSuperClass -> getSuperclass)
Fix #505: Implement StringBuilder(Buffer).setCharAt
Fix #508: Ignore irrelevant DCE warnings in partest
Fix #513: Suppress info from ScalaJSOptimizer in partest
Fix #492: Classify last partests. Partests fully work with --fastOpt
Merge pull request #510 from gzm0/fix-partests

Fix partests
Minor cleanup (unneeded parens and braces)
Get rid of genCallHelper in GenJSCode
Improve state management in GenJSCode
Merge pull request #519 from gzm0/various-cleanups

Various cleanups