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
WiP for the the new IR.
wip
Add StoreModule as IR node.
Add constructor and module exports as IR nodes.
Get rid of the last NoType's.
Complete review of the typings of IR trees.

Now the emitted trees should be correctly typed.
Add array length and get/set as IR nodes.
Split away the ScalaJSClassEmitter off JSDesugaring.

The idea being that, eventually, the DCE will be able to call
the parts of ScalaJSClassEmitter which are reachable directly,
instead of emitting the entire JS code then parse it back.
Remove as many js.Cast as possible.

Now there are only two kinds of js.Cast that we use:
* js.Cast(expr, DynType) -> that's fine, anything can become a dyn.
* 2 down-casts from DynType to more precise types, where we really
  know that the expr will conform to the new type, even though the
  "type system" of the IR cannot prove it.
Reduce the scope of TreeDSL; eliminate it from the compiler.

TreeDSL is now package-private to scalajs.ir. It has also
lost its IF method, which was replaced by the If constructor
in the few places it was used.
Add serializer and deserializer of the IR.

To test them, GenJSCode currently does the stupid job of
serializing its IR and deserializing it before desugaring and
actual code emission.
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.
IR emitters accept Writers instead of PrintWriters.
Make line and column numbers in ir.Position zero-based.

Source maps use the zero-based convention for both the line
and column number, so we follow that convention.
Add the content of .sjsinfo files to the ClassDefs in the IR.

Eventually they should disappear, when the packager and
optimizer are working directly on the IR. But in the meantime,
this makes IR files self-contained: they aggregate everything
that is currently spread in three files: .js, .js.map and .sjsinfo.
Emit serialized IR files instead of .js + .js.map + .sjsinfo.

The ClasspathBuilder automatically expand .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 to work directly on the IR file.