Demultiplex streams of sum types into separate streams (e.g. Stream<Coprod!(A, B, ...)>
-> Hlist![Stream<A>, Stream<B>, ...]
).
```rust use demux_stream::prelude::*;
let coproduct = let (mut bools, mut i32s, mut string_s): (
UnboundedReceiver asserteq!(bools.next().await, None);
asserteq!(strings.next().await, None);
asserteq!(i32s.next().await, Some(123));
asserteq!(i32s.next().await, None);
```