Do not send faction info to clients

It is fully updated via atomic actions
Make leader changes secret
Replace remembering dungeon levels with atomic actions

(The replacement does not work yet, but is otherwise better.)
Send perception to clients as a hacky atomic action
Fixed a few bugs to do with actor creation and time
Ensure with types that atomic actions don't use aborts
Make advancing actor time an atomic action
Get rid of SyncA, which it not needed any more
COmpute arena for an atomic actions and refactor their resending

This fixes a number of bugs caused by a wrong arena declared for an atomic
action and by computing properties of atomic actions to be sent
in a wrong state (before or after the action is executed).
Let containers determine their level id
Optimize sending perception to clients
Fix switching leaders

and generally improve the order in which actors with the same age move.
Let lack of atomic actions count as an abort
Simplify and fix leader change in server
Replace abort in server commands with a failure atomic action
Forbid aborts in server code

They were quite unsafe, e.g., actions could have been sent to clients,
but then aborted and forgotten on the server.
Rewrite state monad using Control.Monad.Trans.State.Strict
Make the server monad strict on state components
Simplify client actions; will move most to atomic
Make the restart action an atomic command