unit_map, lua units, and team recall lists use shared_ptr<unit>

Unfortunately this commit could not really be made smaller, it is
necessary to change all of these things over at once, or specify
very complicated deletion policies for the units at the
boundaries of the modules.

The main intention of the commit is to get these three modules
using reference counting to hold units, even as they are passed
between the modules. Eventually the fake units and other kinds
of units will all also hold such pointers, and the unit_map
unit_pod object will be replaced itself with a single shared_ptr.

Finally the animations objects will hold weak pointers to units,
to fix the segfault issues.

This commit required us to change over the whiteboard, most of
the action_wml, and the AI modules, since these make use of the
recall list from the team class.
use intrusive_ptr instead of shared_ptr for units

Following irc chat with mordante this was thought to be a better
approach.