FurnaceSmeltingEvent

Adds in the FurnaceSmeltingEvent code to the Furnace API
- Calls the event on each tick of the smelting process
- Checks for cancellation of smelting process
- Continues to burn fuel even if smelting process is cancelled
    -  Cancellation of fuel burn is left up to the FurnaceBurnEvent for sanity reasons

Signed-off-by: The Yeti <admin@theyeticave.net>