[micro_ai] tag: move CA_path definition to beginning of file

To make it more visible for UMC authors who want to include their own
(modified) AIs.
Micro AIs: fix bug requiring unnecessary keys for MAI removal

MAIs which take either [filter] or id= used to throw an error message
if neither was given even for MAI removal.
MAIs: add utility functions for storing information in unit variables

These provide a simple and consistent way of storing variables inside
[micro_ai] tags in unit variables.  This is needed for fixing a bug
with variables stored in units from a previous MAI causing problems
with a subsequent MAI.
Micro AIs: use AI id instead of CA id as identifier

… for determining whether AI/CA ids are unique.  Also pass AI id to
eval/exec functions, instead of CA id.  This is also a step toward
fixing the bug with MAI variables remaining stored in units after an
MAI is removed.
In principle, the ca_id= key in the [micro_ai] tag should now be
renamed to ai_id, but that would break backward compatibility without
any benefit to the user, so we deal with it internally behind the
scenes instead.
Micro AIs: another bug fix for required keys for MAI removal

The random recruiters MAI also required unnecessary keys to be provided
for MAI removal.
Fix comments
Micro AIs: use the new functions for storing information in units

such that it is done in a consistent way and this information can be
removed on MAI deletion.
Micro AIs bug fix: remove MAI unit variables on MAI removal

Previously this information remained in units and could alter the
behavior of subsequent MAIs, or even entirely disable them.
Fix typo
Messenger MAI: store waypoint in messenger unit, not self.data

so that it can be removed on MAI deletion, otherwise a subsequent
Messenger MAI using the same unit may not work properly or crash
altogether.
Goto MAI: store whether unit is released in the unit, not self.data

This is unit specific information, and therefore should go into the
unit.  By contrast, information whether all units of the side have been
released needs to remain in self.data.
Fix typos in comments
MAIs: add utility functions for storing information in AI's self.data

These provide a simple and consistent method of storing variables
inside [micro_ai] tags in the AI's persistent self.data variable. This
is needed for fixing a bug with variables stored there from a previous
MAI causing problems with a subsequent MAI
Micro AIs: check for existence of [micro_ai] tags in self.data when...

… setting up an MAI. Ideally, we would delete such previous occurrences
of [micro_ai] tags in the AI's self.data variable. However, the MAI can
be changed while it is not the AI's turn, when this is not possible. So
instead, we check for the existence of such tags and make sure we are
using a different ai_id.
Micro AIs: use the new functions for storing information in self.data

… so that it is done in a consistent way and conflicts can be avoided
when setting up a subsequent MAI.