Call ItemDespawnEvent when an Item is damaged. Adds BUKKIT-1900

## Justification
Currently, no events are fired when an item is killed (e.g. through an explosion or lava).

## Description
This change fires an ItemDespawnEvent whenever an EntityItem would recieve fatal damage. If the event is cancelled, its health (`this.d`) is restored to the default value, 5, similar to the behavior when ItemDespawnEvent is called due to age.

Additionally, CraftEventFactory is imported, because it is used twice.