Return "undefined" when calling .toString() on JS undefined.

String builders, formatter, and hence string interpolators protect
themselves from `null` and use the string "null" as its
representation for display. But they fail to protect against
`undefined`, the one other JavaScript value on which you cannot
call .toString().

This commit makes the compiler treat Object.toString() specially
so that it will handle `undefined` properly and return the string
"undefined" instead of causing a TypeError. Calling null.toString()
will still cause a TypeError.

This fixes #224.
Fix #216: Correct hashCode for boxed Chars
Fix #215: Reflective calls on comparison ops on primitives
Merge pull request #231 from sjrd/undefined-tostring

Return "undefined" when calling .toString() on JS undefined.
Fix #217: toHexString wrong for negative numbers.

For values in the normal range of Int (-2^31..2^31-1), the
result is the same as on the JVM, i.e., it is shown as though
the value had been wildly cast to an unsigned 32-bit integer.

For values outside the range, the result is an explicitly
signed representation. For example, "+fffffffe" or "-80000001".
Fix #213: Correct reflective call rewrite for methods on string with relaxed return types
Merge pull request #242 from gzm0/bugfixes

Bugfixes
Formatter's behavior for out-of-range integers and x, X, o.

Align Formatter's behavior for out-of-range integers (Byte,
Short and Int) to the behavior of Integer.toOctalString and
Integer.toHexString.
Fix #220: Correct runtime return type for boolean & and | ops
Merge pull request #240 from sjrd/fix-tohexstring

Fix #217: toHexString wrong for negative numbers.
Fix #241: Fix reflective call proxy generation
Merge pull request #243 from gzm0/fix-refl-proxy

Fix #241: Fix reflective call proxy generation
Fix #218: class literal for existential value classes.
Merge pull request #244 from gzm0/nonlazy-boolean-op

Fix #220: Correct runtime return type for boolean & and | ops
Fix #219: No bridges (and refl proxies) for macros
Merge pull request #245 from sjrd/valueclasses-classtag-existential

Fix #218: class literal for existential value classes.
Fix dependencies of scalajs-library.

It used to depend artifially on scala-reflect.jar and
scala-compiler.jar, because I was still an sbt noob when
I wrote the first versions of external compilation. Now
I know better, and this commit cleans up the dependency
management of external compilation.
Remove 'extends NotNull' for 'js.Undefined'.

The NotNull trait is deprecated as of Scala 2.11.
Merge pull request #246 from sjrd/fix-dependencies

Fix dependencies of scalajs-library.
Merge pull request #247 from sjrd/unify-library

Remove 'extends NotNull' for 'js.Undefined'.