Still need to properly support encode/decode though. The problem there
is that encode/decode uses AsyncRead, which means we get io::Error
instead of quinn::ReadError and quinn::WriteError. The io::Error type is
not clonable so we just can't use it, well unless it's wrapped in an Arc
or something gross.
The only salvagable remains from a multi-day refactoring effort. The
main benefit is that Setup messages are no longer part of the Message
enum, so match will be a lot easier.
Switched to the webtransport-generic crate so quinn or quiche (with
adapter) can be used. This also involved switching out the
decoder/encoder since it meant a wrapper was required.
The API is now synchronous and any quinn stuff has been moved to another
package. The quinn stuff will be slowly moved into moq-transport with
generic traits.