Add flags to customize source generation
Fix #438: Make scala library source maps point to github sources

Note that currently, source maps are not included in the packaged
sources by default and therfore this change will not have any impact
on the average user. I propse we add a SBT setting to alter this
together with #449 (which will make it really useful).
Fix #448: Warn when REPL is used in Scala.js project
Clean up boxing methods.
Fix #395: Sanitize boxing in JS interop.

Until now, the way boxing has been handled in JS interop has
been implementation-driven (least effort), giving un-spec'able
semantics. This commit fixes this by giving the following simple
semantics to Scala data types seen from JavaScript code
(in all circumstances):

+---------------------------------+------------------+
| Scala types                     | JavaScript types |
+---------------------------------+------------------+
| Boolean                         | boolean          |
| Byte, Short, Int, Float, Double | number           |
| String                          | string           |
| Unit (value `()`)               | undefined        |
| Null (value `null`)             | null             |
+---------------------------------+------------------+

(the canonical Scala type for JS number being Double.)

All types inheriting from js.Any are, of course, themselves,
from JavaScript's point of view.

All other types (including Char, Long, and value classes) are
opaque data types that cannot be manipulated from JavaScript,
other than calling toString() and accessing @JSExport'ed members.

From an implementation point of view, these semantics boil down
to a dead simple rule: everything is always boxed in JavaScript.
Merge pull request #453 from gzm0/improve-source-map

Improve source maps
Merge pull request #455 from gzm0/console-warn

#448: Warn when REPL is used in Scala.js project
Merge pull request #450 from sjrd/sanitize-boxing-interop

Fix #395: Sanitize boxing in JS interop.