Refactored some of the classes

- Added ClassStructure class diagram
- Added IScoreRecord interface
- Implemented IScoreRecord on ScoreRecord
- ScoreBoard: Separated part of the logic in methods (1); Found an
unexpected behavior and fixed it; Added Reset(); Implemented Dependency
inversion.
- Engine: Separated some of the Start() logic in few methods. The class
is still under refactoring process.