Refresh the client when broken blocks are cancelled via an interact event.

When a block is broken, if you cancel the PlayerInteractEvent (which precedes BlockChangeEvent) the player will see the block as broken even though it actually is not.

This commit sends the block back to the client under 2 circumstances:

* In the STATE_START_DIGGING dig state, when the PlayerInteractEvent is cancelled AND the block is instantly breakable (creative or hardness = 0)
* In the STATE_DONE_DIGGING dig state, when the digging check fails AND the server sees the player as not currently digging (e.g the PlayerInteractEvent from STATE_START_DIGGING was cancelled!)