Resolve issues regarding players joining when they shouldn't be

Previously players joining the server when banned or not whitelisted would
show their leave message to the entire server. This would also mean that
they could potentially see part of the world when in reality they
shouldn't even get through the entire process of logging in.

This commit fixes the mentioned issue as well as a few others. The other
additional fixes include compatibility with CraftBukkit regarding the
player's `isOnline()` state during PlayerLoginEvent and incorrect kick
messages being shown when a player is banned/whitelisted (sometimes they
would get errors instead of "You are banned", etc).