add end_play_signal type and visitors

This commit adds an "end_play_signal" type. It is meant to be used
in play_controller classes to prevent crashes due to bad exception
handling / collisions, and should help us to make assumptions more
easily about when networking operations will happen

It also adds some macros to avoid the proliferation of unreadable
try catch blocks. It is expected that many of these can be
expanded and simplified after the refactor.
push end_play exceptions down one level in playsingle_controller

This uses the macros introduced to handle game end exceptions.
It should be a strict refactor.

Rebased to accomodate conflict here: https://github.com/wesnoth/wesnoth/commit/516206a0ee2fc0826707da9d54b44ed051638050
Still a strict refactor.

Note:
If end_turn_exception propogates to the top of
playsingle_controller, there is no handler beyond that and the
program will terminate. If an end turn signal gets there, we
also will terminate. This commit adds an assertion failure with
a message clarifying what happened.
push end_play_exceptions one down in call stack, at "play_turn()"

Continues trend of previous commit. play_turn becomes no throw
with respect to these exceptions, and so we can switch calls to it
to use the "PROPOGATE_END_PLAY_SIGNAL" instead of "HANDLE_...".

It looks like by progressively doing this and unit testing at each
step, we will be able to successfully convert all of the functions
in play_controller to use PROPOGATE, which is a cheap if else and
not an exception handler, and increase the stability of the engine
by avoiding the use of exceptions for control flow. If we continue
this way, we could push all the throws into the event handler
and the replay module. Perhaps could continue from there, but
likely at some point the exceptions might be the simpler solution
esp. for breaking recursion in WML / lua or things like this.
remove unnecessary handler macro from events::raise_draw_event

After discussion on irc, it seems that this function doesn't
throw end level or end turn exceptions, and some play testing
suggests that removing the handler macros here is alright.
push end play exceptions out of play_controller::check_time_over
finish_turn() cannot throw end play exceptions, remove handlers
remove handler from finish_side_done

This function won't throw end level or end turn. game_event pump
will not throw these, although the SDL event pump may throw them
in response to keyboard / menu events.
push end play exceptions out of replay controller top level

This commit starts the process for replay_controller at the
play_replay_level function.
push end play exceptions out of replay_controller::play_replay

Returns a "possible_end_play_signal" now instead. This also
required changes to the header in hotkey/command_executor. This
seems pretty minor, and could perhaps be refactored later.
remove unnecessary pure virtual function definition

This is overrided differently in playsingle, playmp, and replay
controllers, and never is it called abstractly, which is what
this virtual declaration would suggest.
push end play exceptions out of play_side()

This changes both the playsingle and playmp implementations,
but not the replay_controller implementation which is separate.

( squashed: fixup an oversight in replay_controller::play_side )
replay_next_turn signals rather than throws, in replay_controller
replay_next_side signals rather than throws, in replay_controller
play_turn signals instead of throwing in replay_controller
replay_controller::play_side signals rather than throws
play_controller::init_side signals rather than throws
play_network_turn now signals rather than throws
play_human_turn signals rather than throwing
play_idle_loop signals rather than throwing
before_human_turn signals rather than throwing