Polmorphism for undo actions

The old implementation (a single struct covering all types of actions)
was getting a bit over-extended with the evolution of the kinds of data
being stored. This new approach derives a class for each type of action
and relies on virtual functions to decide what to do.

To support the polymorphism, undo_list's std:vectors have been changed
to boost::ptr_vectors. This has the beneficial side-effect of changing
several struct copies to pointer copies.


git-svn-id: http://svn.gna.org/svn/wesnoth/trunk@56406 75b3775d-3801-0410-9e12-e2e43121521d