(authors: polimegalo+pangel) Fix memory leak with inventories and potential mleak with Simulation::players.

- Player::inventory is now of type list<unique_ptr<Stuff>>. It would be
list<Stuff> but its elements are polymorphic (downcasted to e.g. Bomb).
- Simulation::players is now of type list<Player> and associated methods
prevent Player duplication.

In both cases, doing Stuff& s = getStuff(); and re-using s later may
segfault if the object referenced by s was deleted.
Add more fine-grained tests.