Extracted method in UpdateQuality
Created Hierarchy Updater objects

Added updater classes to handle the update process of the items
duplicating the code in Inventory
Typo in LegendaryItemUpdater class name,
Fixed error in NormalItemUpdater ::getQualityChange

Quality should decrease at double speed when sellIn < 0
Moved execution to hierarchy. Erased duplicated code.
Created ItemUpdaterFactory

moved method from Inventory to ItemUpdaterFactory
Protected ItemUpdater-derived constructors

Protected ItemUpdater-derived constructors to ensure creation through
Factory.

moved class to apply protected-visibility