Added server-side EnchantItemEvent

This is a server-side EnchantItemEvent that fires when a player enchants an item with an enchanting table. Modders may change the output or cancel the event. 

This is a re-pull of #1407 but on the branch new instead of master.

The list of enchantments can be fetched from the the output stack. (`ItemStack.getEnchantmentTagList()`). In particular, this list can also be changed by a mod's event handler, by modifying the output item stack. If a mod changes the output item stack, other mods should see the version after changing, rather than before, to prevent conflicting changes. 

As for why the slot is there, it's solely to provide more information that isn't obtainable otherwise, such as the number of levels spent.  It's completely unrelated the list of enchantments and isn't intended to substitute for it.