Added a fire-extinguish flag.
No longer destroying additional fire blocks when fire-spread is disallowed.

Problem:
This feature breaks the consistency of Bukkit's BlockFadeEvent.

Resolution 1:
Emit BlockFadeEvent before removing.

- This might break plugins if they don't expect fire to disappear the way WG removes it.

Resolution 2:
Remove the additional dousing.

- Fire still spreads around a bit (probably due to a bukkit bug), but does
  not destroy anything.

I picked resolution 2.

Rationale: Occam's razor.
Refactored and fixed fire handling.

- Logic should now be easier to follow
- Less code duplication
- The fire-spread flag, the fire.disable-all-fire-spread and the
  stop/allowfire commands now do the same thing.
- The "High frequency flag" setting is now enforced consistently on all
  parts of the fire-spread flag, not just half of it.