Use unique #defines.
Hook up AbstractExt, RulesExt and TEventExt for pointer invalidation.
Added support for the parameter of the pointer invalidation mechanism.

The parameter seems to indicate (educated guess) whether the pointer is invalidated right before the object is removed from the map or deleted (like from a destructor, from Remove) or is removed from the game arrays. Otherwise the object pointed to is just going out-of-sight or changes state (like cloaking, changing owners).

The technical side: the parameter passed to the Ares container functions is the parameter passed to AnnounceInvalidPointer, just converted from BOOL to bool.