* feat!: add server discovery and negotiation * feat!: make protocol unions extensible * ci: add discovery conformance coverage