ai_helper.get_closest_location(): fix bug with tags in SLF

The way how the Standard Location Filter was dealt with only worked
with keys, not tags.
Messenger MAI: fix bug with escort units blocking the messenger

When there were lots of escort units, they previously quite frequently
blocked the messenger’s way, preventing him from making progress even
when it was possible.  Escort units now specifically move out of the
way if they do not need to attack enemy units in the messenger’s way.
Messenger MAI: allow several messengers to be controlled by AI

For two of the CAs this mostly just means reading the [filter] tag and
picking one of the messengers.  However, for the CA moving the escort
units, it means a complete rewrite, as the AI now needs to figure out
which escort unit should be moved toward which messenger.
Messenger MAI: add optional invert_order= key

In the default configuration, the AI moves the messenger which has
advanced the furthest through the waypoints first.  If this key is set,
the rearmost messenger is moved first.
MAIs: minor code simplification in AIs that take both [filter] and id=

These are the AIs that used to use Behavior Candidate Actions (BCA).
Patrol MAI: fix bug with save/load persistent data storage

WML values may not be used as keys, this can make savegames invalid.
Store information in the units now rather than in self.data. (Note:
storing in self.data would also be possible if the syntax were changed.)
fixup b854aab437f157eea642131b882a4987a95c5b6b (ai side drops)

logic error was introduced in client side controller types:
when a player drops and controls an ai-side, the side_drop signal
is only sent to the host, who should make that side a local ai,
not a networked ai.
add server debugging output for level
make server level_ reflect true start of game position

previousy, the [side]'s in level_ were updated with controller changes,
so that observers who join would be up to date, since controller changes
were not stored in history. we now change this, so that controller changes
are stored in history. they are stored as "[record_change_controller]"
rather than "change_controller" because during a replay we should not
restart the turn and reinit if human changes to droid etc.

this is in preparation to move all controller tweaks to server-side
move controller tweaks to server

(fixup of 736ceaa6c7e81882c9c5b2e932307b1f1ecb3bfd)

following discussion with Soliton, we move all "controller tweaks"
i.e. assignments of networked side to human on the matching client
at start of game, to be server decisions, performed concurrent with
start of game.

in fact the controller tweaks are performed using
game::change_controller, which is modified so that it doesn't try to
make server messages before the game has started.

when the server receives [start_game] from the host, the server will
change_controller for every side, sending corresponding messages to
all players and observers, which will update them as appropriate.
it will also rewrite level_ so that human sides are "network" and
ai sides are "network_ai", making the level_ correct for an observer
who subsequently joins.

we remove the obsoleted client-side code in playcampaign.cpp,
multiplayer.cpp.
(squash me) add handling code to multiplayer_wait for controller tweak

We also add to multiplayer_wait.cpp the necessary support code to
interpret [change_controller] messages recieved before game start.
(squash) fix ai assignment during controller tweaks
more serverside tweaks debugging output
add some (flawed) debugging output
server "update_sides" should recognize the network_ai type

otherwise tweaks won't work correctly
fixup update_side_data behavior wrt network_ai
debugging output for client side control change messages
add debug_sides_info to server/game.cpp
fixup ... don't do tweaks except in the tweaks function!!!
remove a fixme note which is moot