[B+C] (b) Allow plugins to catch Thorns damage - BUKKIT-3505

## Problem
When damage is done by Thorns, an EntityDamageEvent is called with the attacker as the one wearing the Thorns armor and the defender being the one swinging / shooting. This causes problems for plugins like NoCheatPlus, as it has to add an exception for far-away damage done by a player with Thorns armor (in reaction to a bow shot) - theoretically, a malicious player could wear Thorns armor and send false hit-swings.

## Solution B
Solution B is to add EnchantmentThorns, and have it call an EntityDamageEvent with DamageCause.THORNS when it damages the player.
**Pros**: If the translation string in DamageSource for thorns is changed, this solution will still work. If a plugin applies Thorns by copying NMS methods, this will catch it.
**Cons**: Adds a new NMS class. Might double-fire EntityDamageEvent.

Only accept one of solutions A or B.

## Links
Bukkit: https://github.com/Bukkit/Bukkit/pull/776
Solution A: https://github.com/Bukkit/CraftBukkit/pull/1035
Leaky: https://bukkit.atlassian.net/browse/BUKKIT-3505