Allow cancelling LoginEvents with component reasons. Ultimately this PR was selected as it better matched the existing code in terms of using lombok and not adding incomplete interfacing. If for some reason a common interface is required, this can be implemented later. Thanks to yawkat also for the PR in #1336. (commit: 0b7d57d)