Add paginated support for /autopromote top
Hotfix for promote time being negative

- Will now check for promotions when using command, if a player runs
  command, it will promote them if needed (so no showing negative)
Overhauled command system
Commands now seperated into classes
Adds in 'reset [player] (hours)', allowing you to change the players play time
New command system
Startings of /agree
Changed plugin.yml to add command
Added command class, and added to main class
Added /agree
New config option, under a rank: "ranks.[rank].default"
Takes 'default' rank and promotes with its 'promoteTo'
Added /agree command
Clean up code
(Thanks IntelliJ)
Moved promoteInfo (to a more logical location)
Moved promoteInfo (to a more logical location)
Merge remote-tracking branch 'origin/dev' into dev
Fix getDefault not looping
Fix top not showing in help, fix help not showing when non-op
Stop a NullPointerException when passing a non-existent rank
More code cleanup
Show rank colours on /autopromote top, regardless of online or not
Adds getting rank of a player string, and the colour of a group/player string
Remove obsoleted calls (made comments)
Fixed stupid bug (Join/Quit event called twice)
Refactor sendMessage, less repetitiveness
Add missed class for previous commit