JavaScriptCore: Fixes for exception/error handling when inside a SWIG wrapper function

This allows "sourceURL", "line", and "message" to be recovered from the exception object by the user so they can track down errors in their code.

Additionally, this makes sure error conditions return an actual object (JSValueMakeUndefined) instead of NULL to prevent possible crashes or weirdness.

The commit logs contain a lot more details.