Added some ideas for new unit abilities.
Attempt #1 at improving AI performance.

Storing units in the game state naively by entity ID led to a large
amount of wasted space.  Lookups were fast but the AI had to copy a 100+
element vector with only a dozen active units in it.  This first attempt
uses a hash table instead and seems to be faster.
Trying out delegating constructor.
Further improve AI performance.

Replaced the unordered_map in the previous change with a sorted vector.
This further reduced the amount of work needed to copy a GameState
object (one of the main drivers of minimax performance).
Draw after 3 full rounds of no units being killed.
Added effect concept.

This represents spells and other special abilities that modify a unit
for a given period of time.
Added constructors for Effects.
Added animation support for effects.
Test some new features.

Basically guaranteed a draw.
Verified the new effect system works on Troll regeneration.
Be able to animate effects.
Added healing effect.  Used by Troll regeneration.
Troll regeneration uses the generic Effect system.
Removed obsolete Regenerate action.

Any new action types like this can use the generic Effect action.
Testing a big battle with new units.
Avoid null pointer mess from undefined units.
Added Binding ability for Giant Spiders.
Bind effect causes a unit to lose Flying.
Added special accessor for flying.

Effects can cause a unit to lose flying (e.g., Bound).  Centralize this
check all in one place.  Also, Bound units can't trample.
New unit Dendroid, new ability Steadfast.

Steadfast units can retaliate unlimited times.
Bind effect removed if Spider moves or is killed.