fix skip turn when a side has no units

the previous implementation didn't fire "side turn end" events in this case.
Conflicts:
	src/playsingle_controller.cpp

It was just a whitespace conflict.
save play_controller.init_side_done as a toplevel member of snapshot

This is in an effort to address https://gna.org/bugs/?21397
call maybe_do_init_side when the engine starts a sides turn

This is part of the effort to fix bug https://gna.org/bugs/?21397
use config::child_or_add

Note: This commit is a squash of two cherry-picked commits
from master, they were adjacent and the second was a fixup
of the first. The first commit in master was
28ffcc54483942c598d24cecd4f65534f0185c51
fix reloading

this is intended to fix
1) an error messages in stderr when reloading a game related to
synced_context: (the original game called random ... times ...)
2) reloading a save with init_side_done = no

Conflicts:
	src/play_controller.cpp

The conflict was because on master I added std::endl; to logging
output for errors, and that didnt go back to 1.12. This commit
deletes the logging messages anyways.
remove unnecessary virtual qualifiers
assert that do_init_side functions are never called with bad arg
remove unnecessary arguments

maybe_do_init_side and do_init_side both required a team_index
argument, which was always player_number_ - 1, (checked this with
assertions and playtesting), and which was available in the class
which defined them
remove more unnecessary arguments, from play_controller::play_side
fix gcc compilation
remove unnecessary arguments

All of before_human_turn, play_side, play_turn had an argument
"bool save". The only use of this was by the playsingle controller
to determine whether or not to save an autosave -- it was controlled
in a single place by a single for loop in play_scenario.

Instead of polluting all of these functions, including play_controller,
and replay_controller, with arguments that they ignore, save was
replaced with a member variable of playsingle_controller. This is a
strict refactor in terms of behavior.

Conflicts:
	src/playmp_controller.cpp

Conflict was from a replacement of "init_turn_data" with
send_turn_data which is not being backported to 1.12
fixup end of scenario saves
fixup 77ead906927bec69d9136d349d637458f7a553f0

Testing reveals that this line cannot be removed without breaking
reloads of disconnected games (with uninitialized sides). But, the
argument should be "false" since this is not called from the replay
codepath.
fix player_type_changed durign ai turn

it is possible that we receive a player_type changed during an ai turn.

especialy this fixes :droid
Conflicts:
	src/playsingle_controller.cpp

Conflicts were because some earlier changes to networking were not
and will not be backported to 1.12.
Fix bug #22116: unlock movement when attacking enemy+discovering in fog
use completion setter object in mp linger mode

mp linger mode was not properly setting the completion status,
as sp does. This caused mp end of scenario saves not to end up
in linger mode when they are reloaded.
Merge pull request #178 from cbeck88/1.12+bufix_backports_ii

1.12+bugfix backports ii

This contains the bugfixes from last week (and a bit before) which we tested on master.

List of cherry-picked commits: http://hastebin.com/vududegidu.hs

The bugs we fixed:
"Saving and loading may cause a side's turn is not initialized" https://gna.org/bugs/?21397
End of scenario saves now have all the units in them. This removes the bandaid committed for this bug report: https://gna.org/bugs/index.php?15545
We will hopefully now fix it by saving [carryover] if the game is in linger mode.
Update changelog
fix bug #22123 by resetting map, rebuilding screen on replay reset
update changelog