Currently, Encoders and Decoders are singletons for programmatic endpoints
and they are per-connection objects for annotated endpoints.
They should have the same lifecycle.
Probably per-connection is best, so register by class on EndpointConfiguration, not by instance.
Also, they need some view into the rest of the websocket API. Suggest
as a mini lifecycle.