Move timeout code to other side of uthread yield.

Also, only spin on awaiter->data if a timeout was set, and return the
proper value from the futx_wake() call.