[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.
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/CraftBukkit/pull/1116