Refactor

* change materialProvider to SpecialMaterialGenerator
* IMagicalItemGenerator returns TraitItem, to account for curses
* Start CurseGenerator