Store simulation NPCs in a map<uuid,NPC*> instead of a set<NPC*>

- It's better to compare uuids directly than to follow pointers to main
memory before every comparison.
- I'm going to make WithUuid a virtual base class, and this prevents
fast (static) cast from WithUuid to NPC. I don't want to have a slow
(dynamic) cast every time someone looks up an NPC so the change from set
to map had to be done anyway.
Make Event[Listener|Source] virtually inherit WithUuid.

Also improve documentation, make positionable inherit both EventListener
and EventSource, and rename EventListener::trigger to
EventListener::callbackReady.