Fix #422: Add js.UndefOr[+A] type to represent A | js.prim.Undefined.

This type is an unboxed representation of *either* an A *or* the
JS undefined value. It offers an Option-like interface.
Leverage js.UndefOr[A] to type more precisely some of our APIs.

In particular, js.RegExp.ExecResult is now a subclass of
js.Array[js.UndefOr[String]].

In the process, this also uncovered a bug in java.util.regex.Matcher
which had to be fixed at the same time to still typecheck.
Merge pull request #447 from sjrd/undefor-type

Fix #422: Add js.UndefOr[+A] type to represent A | js.prim.Undefined.
Add 2.11.0-RC4 to crossVersions
Merge pull request #452 from gzm0/add-2.11.0-RC4

Add 2.11.0-RC4 to crossVersions
Fix #446: Make setting out of jsEnv (and sanitize stuff)
Rename importScripts to require
Introduce ScalaJSPackfiles and generalize JSClasspath generation
wip add node.js environment
Rename preoptimize to fastOpt and optimize to fullOpt
wip wire