Added PlayerEnchantEvent

This event fires when the player chooses one of the options in the enchantment
table. This event allows access to the list of enchantments that will be
applied to the itemstack, and access to the itemstack being enchanted.
The only reason I have the helper is because I thought you needed this MinecraftForge.EVENT_BUS.post(e);. Also you say 'cancel' meaning canceling the enchantment, if so all the modder would need to empty the list or set it null. Also the reason there is a lot of stuff in the patch is because I needed to be able to change the list and the itemstack, to the ones in my event, which needs initialized.
Also I just noticed something there are 2 identical list being initialized here:
List list = EnchantmentHelper.func_77513_b(this.field_75169_l, itemstack, this.field_75167_g[p_75140_2_]);
and here:
List list = e.enchantmentDataList;
That is weird.