more robust replaying

instead of giving an assertion error after the OOS message we now

1) ignore dependent comments when we find them but didn't expect them
2) save commands for later when we find them while expecting another
dependent command. In this case we try to get a correct dependent
command by querying the user.

after we showed the OOS message ofc.
fix 21903

it's now impossible for non hosts to advance to the next scenario before
the host does, this is the intended behavior which didn't work before
because the hotkeys system automaticly sets the endturnbutton enabled if
can_execute_command(turn_info::HOTKEY_ENDTURN) == true.

We also make the clients end linger mode immediately when they receive a
PROCESS_END_LINGER, to prevent receiving data of the next scenario while we are not playing it.
partly revert e454252f218b

this should restore the behaviour that players don't loose if they have
no units left after the start event. Because it wasn't tested enough.

Note, that in most cases we don't need the check_victory in
playmp_controller::play_network_turn because we have a check_victory()
in the end in run_in_sycned_command
enable sycned ai actions during synced actions

we now call a new function run_in_synced_context_if_not_already instead of
run_in_synced_context in ai actions becasue we want to be able to invoke these
functions from inside a synced context. run_in_synced_context_if_not_already
runs the function directy if already inside a synced context. Otherwise it
calls run_in_synced_context.
better error message
more robust replaying
more robust replaying
use template for config_assign

this removes code dublication,
use boost::ref in boost::bind
add code for precise timestamps in log

the code is not used yet, You can set precise_timestamp= true to use it.