Merge branch 'support/v0.4'

Non-trivial conflict resolutions:
- Move scalajs-corejslib source map handling code (when reading from
  within a JAR) from ScalaJSClasspathEntries to ClasspathBuilder
- Manually rename optimizeJS / preoptimizeJS to fullOptJS / fastOptJS
  in some key scopings
- Re-patch code from SourceMapCat directly into ScalaJSBuild

Conflicts:
	compiler/src/main/scala/scala/scalajs/compiler/GenJSExports.scala
	sbt-plugin/src/main/scala/scala/scalajs/sbtplugin/ScalaJSPlugin.scala
	sbt-plugin/src/main/scala/scala/scalajs/sbtplugin/SourceMapCat.scala
	tools/src/main/scala/scala/scalajs/tools/classpath/ScalaJSClasspathEntries.scala
	tools/src/main/scala/scala/scalajs/tools/io/FileVirtualWriters.scala
	tools/src/main/scala/scala/scalajs/tools/io/VirtualWriters.scala
	tools/src/main/scala/scala/scalajs/tools/optimizer/ScalaJSClosureOptimizer.scala
	tools/src/main/scala/scala/scalajs/tools/optimizer/ScalaJSOptimizer.scala
	tools/src/main/scala/scala/scalajs/tools/packager/ScalaJSPackager.scala
	tools/src/main/scala/scala/scalajs/tools/sourcemap/JSFileBuilder.scala