Save client state with a faction number, not name

The name is not known to the client before it loads a savegame
or is contacted by the server.
Split the semantics of CmdCli into semantic functions
Move configUI from client session to client state

so that client session contains only the front-end related data.
Add MonadClientUI and make client monad constraints more precise
Split client commands into UI and game logic commands
Harden and fix client init code
Let server ask clients to disconnect
Swap player list component in the config file

The config option assoc lists are actually maps, so they eliminate repetitions.
Fix savefile names
When switching players, flush frames and prompt
Eliminate the 'you' hero; sounds wierd with many human players

Also, don't use fancy hero names for more than one faction.
Fix game restarting