Coward Micro AI: add optional attack_if_trapped key

If set, the unit attacks the weakest enemy next to which it ends up at
the end of its move.
change saved_game & savefile format

we move code from playcampaign.cpp to saved_game.cpp
we also change the savefile format so that ingame savegames don't
contain [carryover_sides_start] anymore becaus all that was already
merged to both [snapshot] and replay_start.

This commit is likley to break something. If so that will be fixed in
later commits.
move more code playcampaign -> saved_game

also removes some out commented code.
small playcampaign.cpp refactor
move carryover handling out of playcampaign.cpp

this also makes a small change in the savefile format: [endlevel] ->
[end_level_data] in snapshots.

we still have the "store_carryover" function in playcampaign.cpp which does the visual message.
Note that the real carryover happens after linger mode while that message happens before linger mode this simplifies linger mode saves.
remove outcommented code
move rotate_random call playcampaign ->saved_game

this also removes some set_/remove snapshot calls, which are not needed
becasue there is no snapshot after convert_to_start_save.
make use of playsingle_controller optional
minor playcampaign refactor
remove unneeded code

we read the replay from [replay_start] not form [carryover_sides_start]
so no need to write them there.
load replay from [scenario] if [replay_start] is not present

the intention is to change the serverside generated replays to contain
[scenario] & [carryover_sides_start] & [replay]. [replay_start] would
be wrong because carryover isn't expanded in these servergenerated
saves.

Servergenerated saves from reloaded (non start of scenario) games will
then contain  [replay_start] & [carryover_sides] & [replay]
remove outdated line

we store difficulcy only in classification, not in carryover_sides_start
simplyfy level_to_gamestate

most liley level_to_gamestate is currently broken since the latest
saved_game changes, but this commit doesn't change anything
remove set unneeded difficuly

we don't store difficulcy in carryover_sides_start anymore
fixup scenario advancing

the "gamestate().remove_snapshot();" is unneded and would undo the
"gamestate().set_snapshot();" in playcampaign
make wesnothd use savefile format for new games

This patch changes the mp wesnothd protocol.

multiplayer connect now works as following:
multiplayer_create/configure creates saved_game object which is then
loaded by mp_connect and sended to the server in the usual savefile
format, this especially implies that [side] are no longer at toplevel
but instead nested into [scenario] or [snapshot].

mp options are saved into state (the saved_game object)
(state_.mp_settings()) previously we had a separate mp_settings object
for that now we only have one mp_setting object.

This commit still not fixes mp modification/era events/options. The
reason is, that i want to move the expansion of those to saved_game.cpp
for better compatibility to Sp (Especially make era events work in mp games
reloaded in sp), but if that won't work i'll just enable them how they
were before.

There  are still some things to do. Especially the server generated
replay-saves will be completely broken. (will fix in another commit)

we don't use the [replay_start] as starting pos in mp anymore so i removed
2 lines in playcampaign that assumed that.

I also removed soem code in mo_game_utils that seemed redundant, bugged or useless

since we now send the [carryover_sides_start] over the network too there
is no reason to apply [carryover_sides_start] before getting into
mp_connect engine (when advanging the the next scenario), even more,
since the new code expects only ONE of [carryover_sides_start] or
[carryover_sides] to be present, we cannot expand carryover_sides_start
in playcampaign before going to mp_connect because we might wan to modify
[carryover_sides_start] in mp_connect

still TODO:
* rename mp::configure::get_parameters
* reimplement mp modification/era s events/options
* remove fields from the mp_game_settings object
* remove disabled/outcommented code
make wesnothd use savefile format for new games

the serverside part
fix test/ compilation
fix servergenerated replays

I also removed 'mp_game_title' because if i leave it, it casues an 'attributes not in order' error since level_ contains attributes. Idk what it does so i removed it. if we want it we should write in into level_
add not_corrupt() function in saved_game class

and add comments about other functions.