constellation: Make the scheduler not spin while waiting
This approach uses a secondary thread to manage the timeout + select. This is not ideal, but it can be vastly improved if something is done about rust-lang/rfcs#962. The other apparently cleaner option, having the returned value not being an ipc-sender, but a struct containing the sender and the Thread handle (which would allow unparking), wouldn't work across IPC.