async: reorder statements for readability

Signed-off-by: Jan Dvořák <mordae@anilinux.org>
async: redesign to allow sending data to worker

The worker can now implement safe cancellation using thread inbox.

    (async
      (for ((i 100))
        (when* ((tag (thread-try-receive)))
          (raise (exn:cancelled tag) 'async-task "cancelled"))
        (process i)))

Signed-off-by: Jan Dvořák <mordae@anilinux.org>