Support for multiple value return from wrap-evt and handle-evt

wrap/handle-evt that receives multiple values must have a handler function with adequate arity.

struct.c:
  change contract for wrap/handle-evt from (any/c -> any) to procedure?
thread.c:
  adjust sync processing
sync.rktl:
  add test for handle-evt, wrap-evt and prop:evt
add ackn
add `port-counts-lines?'
ffi/unsafe: allow multiple values for a `(_fun ... -> _racket)' result

Closes PR 13496
doc repair

Closes PR 13415