Expose quickjs resource limit and interrupt functionality

Hi!

QuickJS has built-in support for limiting the resource use of its runtimes, discussed on page 13 of the documentation pdf (see bottom).

It would be great if the configuration of these resource limits could be exposed in this package.

In particular, JS_SetInterruptHandler allows setting a callback to be called regularly by the JS engine and can allow implementing Ctrl-C functionality a JS REPL, and time-based execution limits for either a VM instance or individual calls to Eval.

The related CGo-based package quickjs-go exposes this functionality through an API that allows configuration at construction time, and also supports user-provided execution handlers with rt.SetInterruptHandler:

rt := quickjs.NewRuntime(
    // Specified in seconds; would be nice if it were a time.Duration, 
    // or left to the user to implement via SetInterruptHandler
    quickjs.WithExecuteTimeout(30),
    quickjs.WithMemoryLimit(128*1024),
    quickjs.WithGCThreshold(256*1024),
    quickjs.WithMaxStackSize(65534),
    quickjs.WithCanBlock(true),
)

// This will overwrite the execution timeout with a custom function
rt.SetInterruptHandler(func() int {
    // Returning a nonzero value will interrupt execution
    return 0
})

If it's possible, it would be extremely nice to have this functionality exposed as part of the Go API of this package.

Thank you!

Edited by Yuri