Fix comment typos.
enable undo recruits/recalls if no rng was used

If we used rng during an acion we can never undo it becasue it is an nonundoable information gain. Also it's technicaly impossible because in mp using rng will result in data send over the network, which cannot be undone. Wedon't need to check whether the unit had traits/names this was becasue that would also have caused rng calls.
Initialise all members.

Issue found by cppcheck.
Pre instead of post increment a variable.

Issue found by cppcheck.
Replace a increment loop with std::advance.

The code was flagged by cppcheck, due to the post increment.
Pre instead of post increment a variable.

Issue found by cppcheck.
Pre instead of post increment a variable.

Issue found by cppcheck.
Pre instead of post increment a variable.

Issue found by cppcheck.
Use empty() instead of comparing size() with 0.

Issue found by cppcheck.
Use empty() instead of comparing size() with 0.

Issue found by cppcheck.
removes unused variable

is_determisic_mode_ was accidently placed there during rebasing i think
Use dtor + placement new in assignment operator.

The change was used to simplify the code. A member was not copied and
that was noticed by cppcheck.
Use a variable as const ref instead of const.

Issue found by cppcheck.
Limit variable scope.

Issue found by cppcheck.
Remove an unneeded helper variable.

There was a cppcheck warning, that the scope of has_end_turn could be
reduced. Removing the variable makes the even simpler.
Limit variable scope.

Issue found by cppcheck.
Merge branch 'cppcheck'

Fixes several issues found by cppcheck, or issues found while reviewing
the issues found by cppcheck.
Test whether there is a prefix for a markov name.

When the prefix is empty, there is no name so directly return.

This with commit f941c700810199a585f446272d184fbabf0ed879 makes it
possible to undo recruitment of undead units.

This breaks compatibility so is not intended for backporting.