Smell: Conditional complexity en updateQuality()

Refactoring: se reescribe utilizando los métodos privados del commit
anterior (algunos nuevos y otros se quitaron), aplicando "replace nested
conditionals with guarded clauses".
Se intenta mejorar los smells de Feature Envy y Long Class, y aumentar
la cohesión, migrando los métodos a una clase interna de Inventory,
llamada "ItemUpdate", que se encarga de definir los métodos para
actualizar los items especiales (Brie, Sulfuras, Cake, Concert) y los
ordinarios (actualización común: Vest, Elixir).
Refactoring: Extract class
Refactoring: Replace primitive with object.
Se utiliza una clase Range para validar el rango de quality. Se lo hizo
también para los rangos de sellIn, pero al ser varios, el código
resultante era más complejo, por lo que no se utilizó Range para sellIn.