Fix the player 'joining' when they should be kicked

ORIGINALLY PR #518

This PR fixes issue #510, and #156, as well as touches on issues addressed in PR #373 about errors when not on a server whitelist.

The PR moves the method calls that send the join packet to the player from the constructor to a seperate method, and then calls that method once the player has been confirmed, and the PlayerLoginEvent has not been disallowed.

The creation of the InventoryMonitor is necessary in order to prevent errors with pulse.

------------------------------

*Edited by turt2live*

**Related Links:**
- Original PR: #518 
- Ticket: #510 
- Ticket: #156 
- Ticket: #296 
- Includes changes from #373
Why not change the if statement to be `online && text != null && !text.isEmpty()` ?