Added test for existing functionality

Sulfuras quality/sellin should not change
Added backstage pass tests
Refactor: UpdateQuality of 1 item

Extracted loop contents into a new method to update the quality of a
single item.
Introduced new QualityItem type that wraps Item
Moved UpdateQuality() to QualityItem

GildedRose is now only 23 lines long; all logic is in QualityItem now.