[Bleeding] Properly cancel fishing event. Fixes BUKKIT-5396

Previously, when cancelling a PlayerFishEvent with State.FISHING, the next
fishing attempt would automatically result in a new PlayerFishEvent with
State.FAILED_ATTEMPT because the player's hooked entity was not properly
cleared. This ensures that the player's hooked entity value is set to null so
that the next attempt will result in the proper state being called.

Additionally, when cancelling a PlayerFishEvent with any other state, the
hook was flagged for removal, leading to a mismatch between client and server
regarding the current state of the fish hook. Thanks to @mylume for the fix for
this half of the issue, which is to simply return 0 on a failed attempt, rather
than flagging the hook for removal.