Add implementation of Enchantment

There is still a problem where if a plugin calls canBeAppliedByTable with a book it will return false for vanilla enchantments as books are treated differently. I can't see an easy way round as if a plugin dev overrides that method they might want it to return true or false.