Split JS::ErrorData out of JS::Error so that it can be used both by JS::Error and WebIDL::DOMException. This adds support for Error.isError to DOMException, also letting us report DOMException stack information to the console.
We don't need to call .to_string_without_side_effects() when passing a JS::Value in for string formatting. The Formatter will do it for us.
This is used from a few different places in the spec.