Fix #471: Adapt partest to new JSEnv structure
Merge pull request #486 from gzm0/fix-partest

Fix #471: Adapt partest to new JSEnv structure
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