Take scripts as ~str to support non-ASCII string literals etc.

The ASCII-based `JS_EvaluateScript` converts to UTF-16 internally, so this shouldn't be fundamentally worse (but I haven't benchmarked the two conversion routines or anything).