Use virtual inheritance in IEntity/IController
Currently, this "diamond" inheritance scheme is not possible:
This scheme would allow to implement common methods like SetUniqueId/SetName only once.
It could be realized by using virtual inheritance in IEntity and IController:
Now:
class IController : public IIdentifiable
Proposed change:
class IController : public virtual IIdentifiable