The Quake protocol family is now implemented on a per-struct basis
using the new protocol_t struct. It's a container for protocol info such
as name, number, and soon max edicts, max models, max frames, max
sounds, etc. For now, it also contains function pointers to MSG_
functions.
The MSG_ functions (specifically the Read and WriteCoord, Angle, Vector
functions have been made generic, and these function pointers point to
them instead of using protocol-based branching.
The protocol net messages themselves are now a jump table, not unlike
the QC builtins interface. This will make things cleaner and scalable
for implementing Quake protocols that might be dramatically different
from NQ and QW.