Fire EntityDespawnEvent when entities despawn. Fixes BUKKIT-5645

There was not any event fired for when an entity despawns for reasons
other than death, EG when a non-persistent entity is removed because no
player is nearby (RemoveWhenFarAway). This commit fires the
EntityDespawnEvent whenever an entity is removed from a world. It
additionally directs all entity removal to the removeEntity function,
rather than having duplicates of that functionality across the code. To
be used with a matching B commit that adds said EntityDespawnEvent.