[Items] [Enchantments] EnchantBlock Is INotifyCollectionChanged

- Made the EnchantBlock class leverage INotifyCollectionChanged so that any modification to the collection can be listened to. This means the Item class can now listen for the event to set the dirty stats flag.
- Added contract for IItemBuilder (and pulled that sucker to its own file).
- Tweaked contract settings to try being  bit more strict.  I think sometimes it fails builds... but only AFTER it builds? It's kind of weird, but I'm still experimenting. I'm learning that I need more contracts!