Don't build commands as a server
Be smarter when clearing peer data after servicing the network w/ ENet
Add a better error message when an attempt to listen on an address fails
Don't spawn a window with -nodrawers or headless mode
Revamp main game loops; send setup to new clients

The old game loops were built around the old netcode; now they're
updated for the new netcode and more explicit.

Added a "graphics_initialized" flag so doom_printf can print to the
command-line.

Moved "maketic" to be internal to G_BuildTiccmd.

It turns out that ENet stores hosts (in ENetAddress.host) in network
byte order (big endian), so scattered `doom_b32` around to fix this when
printing out peer information (etc.).

Netcode marches on; servers now send setup info to newly-connected
clients.
Fix some ENet API misunderstandings

ENet doesn't need you to call enet_packet_destroy after
enet_packet_send, also using NO_ALLOCATE, then enet_packet_send, then
M_BufferZero sends a bunch of zeros to the peer.  I fixed this by
removing the flag, but I think I'll move the M_BufferZero to just after
the enet_host_service call, that way I can still use NO_ALLOCATE

Added the UNSEQUENCED flag to packets sent from the unreliable buffer; I
thought this was implied but it is not.

Removed debugging stuff from last commit from n_main.c
Break out network buffer flushing into a static function for clarity
Servers don't eat CPU now; working on client setup
Working towards clients & servers communicating.

Updated TODO.md

Only pop commands from a player's command buffer if they existed in the
first place

Added doom_pprintf to print message to a specific player (kind of)

Added a clientside local command buffer, which is necessary because
there's a difference between the commands run locally and the commands
the server has acknowledged receipt of.

Wasn't initializing the network states module.

Wasn't sending the sync type in the setup message.

Player commands must include the playernum of the originating player,
because they are relayed (in command sync mode) by the server.

Copy commands from the network buffer directly to the command buffer
instead of using an intermediate, temporary command.

Fix a dumb copy/paste bug in n_proto.c in COMMAND_CLIENT_ONLY define.

Fix n_state; current_game_state is not a pointer and everything within
that module takes its reference.  Clearly written at 2am ;)

Players are fully serialized and deserialized now, instead of running a
memcpy.  This was necessary because commands needed to be serialized,
and they won't survive a memcpy.  Additionally memcpy'd data isn't
portable, so eventually all of these will have to be converted.