BlockBurnEvent, BlockIgniteEvent knows exactly what caused the ignition.

Fire Related Events Enhancement
----
### This is awesome because:
1. BlockBurnEvent and BlockIgniteEvent can know exactly what caused the ignition, wether its another block or an entity for ANY event that's raised.
2. BlockIgniteEvent is properly called for EnderCrystal environmental flame.
3. BlockIgniteEvent is properly called for blocks ignited due to explosion.
4. 100% compatibility. This does not break anything.

### Links:
__Leakies:__
https://bukkit.atlassian.net/browse/BUKKIT-3609
https://bukkit.atlassian.net/browse/BUKKIT-3656
https://bukkit.atlassian.net/browse/BUKKIT-3657