* Support `await` in REPL without wrapper function
Rather than compiling top-level await expressions directly, which will
always throw a syntax error, the REPL wrapper will now wrap them in a
closure and handle the returned promise before calling back to the REPL.
Fixes#4603.
* Cancel REPL callback after a SIGINT during an awaited evaluation
This change allows users to 'cancel' awaited expressions that they don't
want to see the result of. Ultimately, this *does not* prevent the
expression from completing (e.g. for `await fetch(url)`, `url` will
still be downloaded, but the user won't have to wait for it to finish
and the result won't be printed).