[B+C] Add ItemDeathEvent for more coverage of Item removal. Adds BUKKIT-1900

### Problem
Currently, plugins have two events to listen to when they want to detect an Item entity being removed - `ItemDespawnEvent` and `PlayerPickupItemEvent`. However, this does not cover all possible cases.

The current best way that plugins have to track items involves use of the scheduler, a collection of Item objects from the Bukkit API (something that is discouraged), and the isValid() method. This is incredibly non-optimal, to say the least.

### Justification
Some plugins have cause to track the lifetime of Item entities. An immediately obvious example would be what happens to a player's items right after they die - for example, if a player dies standing next to a cactus or over a lava pit, several of their items are going to be dying in short order.
Another example would be the [AutoReferee](https://github.com/rmct/AutoReferee) plugin making an announcement when a team's wool falls out of the world.

No EntityDamageEvent is called for Item entities, as they are not Living, so plugins are unable to track item death that way.

*Note that two methods of removal of Item entities are left untouched by this change - item merging, and plugins calling remove(). However, item merging deserves its own event and PR, and plugin action should not be calling events.*

### Description
Whenever an EntityItem recieves fatal damage, the new ItemDeathEvent is called. A method in CraftEventFactory is added to do the best-guess determination of the appropriate DamageCause to use in the event.

Additionally, CraftEventFactory is imported, because it is used twice.

### Related
https://bukkit.atlassian.net/browse/BUKKIT-1900
https://github.com/Bukkit/Bukkit/pull/838