Fix #311: Move test bridge from Scala.js library to separate project
Merge pull request #494 from gzm0/split-out-test-interface

Fix #311: Move test bridge from Scala.js library to separate project
Fix #495: Bump versions

- Use 2.10.4 to compile 2.10 libs and sbt-plugin
- Make 2.11.0 the default
- Compile & publish tools for 2.11
Merge pull request #497 from gzm0/bump-versions

Fix #495: Bump versions
Improve positions of some class definitions.
Fix #496: conversions from JS prims to Scala types are unsafe.

* js.prim.Number  -> Double: makePrimitiveUnbox to `Double`
  (null becomes 0, numbers become themselves, everything else throws)
* js.prim.Boolean -> Boolean: makePrimitiveUnbox to `Boolean`
  (null becomes false, booleans become themselves, everything else throws)
* js.prim.String  -> String: `.asInstanceOf[String]`
  (null and strings become themselves, everything else throws)
Merge pull request #502 from sjrd/before-new-ir

Small fixes
New intermediate representation (IR).

This new IR is meant to be an interchange format between the
compiler and the packager and optimizers (instead of raw
JavaScript code), so that inlining will eventually be possible.
In this commit, though, it simply replaces the JS Trees as an
intermediate representation in the compiler: the compiler
emits the IR and immediately desugars it in the JavaScript
subset, which is emitted as source code as before.

Some highlights of the IR compared to JS trees:
* It represents Scala.js classes independent of an encoding
  (so the variable `ScalaJS` and its fields are never in the IR)
* It is statically typed, with an additional `dyn` type.
  (note: I said it is *statically typed*; I did not say it was
  *typechecked*!)
Merge pull request #493 from sjrd/smart-optimizer-1st-review

New intermediate representation (IR)
Update HTML files of examples for 2.11.0.
Refactor hierarchy of virtual files to VirtualTextFiles.

The current virtual files are implicitly text files, but
eventually we will need to also represent virtual binary
files. This commit refactors the hierarchy to separate
VirtualTextFile (text) from VirtualFile (agnostic). This
refactoring will allow the later introduction of binary
files as VirtualBinaryFiles.
Merge pull request #507 from sjrd/html-files-2.11

Update HTML files of examples for 2.11.0.
Merge pull request #509 from sjrd/refactor-virtual-files

Refactor hierarchy of virtual files to VirtualTextFiles.
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