Smarter NickFix to prevent a domino reaction

- Fix UserNickChanged event.
- Add event cancellation for ERR_NICKNAMEINUSE.
- Added event PreNicknameInUseError.
- NickFix will now prevent the bot from auto-retrying with another nick if `NICK` failed.