Add disconnect ("unlink") code

Also rename link_state -> state for consistency.
Prevent clients from moving while paused
Rename incoming_link to new_link

Shorter, easier.
Notify of remote disconnect
Don't print seed when reading from server only

Since in that case, the seed isn't used.
Add connection upkeep and active pinging, clean up

This adds a ping packet that is used to both initiate connections and
keep them alive.  After a certain amount of inactivity, we'll send a
ping to each linked host, and when we receive a ping, we send one back
to acknowledge it.  After a certain amount of wire silence, we hang up.

This also cleans up the packet receiving code greatly and splits out the
protocol upkeep phase from the receive function.