Fix #184: Add support for Throwable.printStackTrace().

Stack traces are captured when a new Throwable (or subclass)
is instantiated. JavaScriptExceptions capture their underlying
JS exception's stack trace instead of themselves. The trait
scala.util.control.NoStackTrace disables capturing the state
entirely, for efficiency, just like on the JVM.

When printStackTrace() or getStackTrace() is called (not before),
the stack traces are analyzed in a browser-dependent way, and
translated to an Array[StackTraceElement].