Fix possible race in wire_list_wait

If the wait was triggered before we managed to get to the suspend we
would go to sleep and never wake up. Now we check if there is a
triggered waiter already before suspending.
Add wire IO, an async IO from sync syscalls

Many system call operations are blocking and we would like the wires
themselves to be non-blocking as much as possible. This adds wio_* calls
that will not block and perform the blocking operation in another
thread.