Creational: Prototype: Clear old implementation
Creational: Prototype: MonsterRegistry prototype
Creational: Prototype: Monster can attack
Creational: Prototype: Cyborg is a kind of Monster
Creational: Prototype: MonsterRegistry can create a Cyborg
Creational: Prototype: Attacking with a Cyborg
Creational: Prototype: A Monster can load its sounds and textures
Creational: Prototype: Loading sounds and textures of monsters during the creation
Creational: Prototype: Alien is a new type of Monster
Creational: Prototype: MonsterRegistry is able to create Aliens
Creational: Prototype: Creating an Alien and attacking with it.
Creational: Prototype: Acid is a kind of Monster
Creational: Prototype: MonsterRegistry is able to create Acids
Creational: Prototype: Creating an Acid and attacking with it.
Creational: Prototypes: Monsters are cloneable
Creational: Prototype: Cloning the Monsters and attacking with them
Creational: Prototype: MonsterManager skeleton

It differs from MonsterRegistry in the following manner:
   - Do not know the types of the Monsters directly.
   - Able to handle multiple types of monsters.
   - The clients of the MonsterManager is responsible to initialize
     the different kinds of monsters and store them in the
     MonsterManager properly
Creational: Prototype: Type definition of MonsterPtr is moved to a separated header file
Creational: Prototype: A MonsterManager is able to handle a registry of monsters.

Handling properly re-registering of monsters.
Creational: Prototype: Registering different type of Monsters into the MonsterManager