[Contracts] Contract Cache + Tweaks

- Turning off contract cache since it proves to cause internal errors in the static analysis currently (will turn on when this is resolved by the tool maker).
- Made some tweaks based on the static analysis suggestions.
- Fixed an enchantment test.
[Enchantments] Item Enchantment Generator

- Added a system for performing enchantments on items (without actually having to know about items) based on the concept of affixes.
-- In my typical paradigm you'd have something like (And yeah, these are Diablo-esque mixed with my own thing):
--- Normal Items: 0 affixes
--- Magic Items: 1-2 affixes (named prefix, named suffix, or both)
--- Rare Items: 3-6 affixes (special naming convention not handled here)
--- Set Items: X affixes (special naming convention not handled here)
--- Unique Items: X affixes (special naming convention not handled here)
--- Mythic Items: X affixes (special naming convention not handled here)
--- Legendary Items: X affixes (special naming convention not handled here)
-- This system should cover spawning random enchantments for the magic/rare tier as well as named prefixes/suffixes for magic affixes. The other naming mechanisms to follow.
-- I'm still contemplating it, but technically the other item-styles could get by with one non-random-spawn affix that is linked to the X number of enchantments it's supposed to have. Could work, but I'll want to prove with more tests.
[Enchantments] Named/Random Affix Separation

- Introduced an IRandom interface so that I can control Randoms inside of my tests... Probably a better design to use an interface for it anyway (as... proven out of necessity here).
- Separated out random enchantment generation and named prefix/suffix enchantment generation.
-- They leverage an abstract base class for some common functionality.
-- Each was performing a different job, so it made sense to treat them differently.
- Created unit tests around the newly separated interfaces+classes.
- Added a system for mapping a magic type ID to a number of affixes we expect.
-- See the previous commit for more detail on why this is useful.
-- Items of magic type A an be spawned with B to C number of enchantments
-- Items of magic type X an be spawned with Y to Z number of enchantments
- Updated the schema to have a table that would be pulled from for this information.