improve join
support exit_on_error option
fix link option in runner:spawn/1
fix _sync deadlocks if shell process exits