The GildedRose Kata in C# - Solved - Refactoring using TDD (NUnit/Rhino), BDD (Specflow) and SOLID Principles