protocol negotiation — GMCP, MSDP, and client detection ======================================================== how the server offers GMCP and MSDP to connecting clients, how clients accept or reject them, and how the game guards against sending data to clients that don't support it. see also: ``mud.tin`` (tintin++ client config), ``docs/lessons/charset-vs-mtts.txt`` (related telnet negotiation gotcha). the lifecycle ------------- 1. client connects via telnet 2. telnetlib3 calls ``begin_negotiation()`` on our ``MudTelnetServer`` 3. server sends ``IAC WILL GMCP`` and ``IAC WILL MSDP`` 4. client replies ``IAC DO