pipewire: Use pipe2 instead of eventfd in Channel<T>
Using pipe2 instead of eventfd increases portability and reduces special casing. Due to the channel lock eventfd only counts to 1 and a pipe is as efficent as eventfd. Also gets rid of some unsafe blocks.