put include guards on boost/function

According to clang boost/function.hpp does not have include guards,
and from inspecting clang diagnostics we include it many times
in several compilation units. This commit adds an external include
guard to all of our includes of this header, it was made using

find . -type f -exec sed -i 's/^#include <boost\/function\.hpp>$/\n#ifndef I

and inspecting the results.
remove unnecessary include
Merge branch 'include_guards_on_boost_function'
fix servergenerated replays

if this is a reloaded game then we dont need to add [start]
remove code duplication of unit advancements

the advancemnts after [unsoter_unit] and after attacks not use the same
function.