[B+C] Add QuitReason enum to PlayerQuitEvent + PlayerKickEvent. Fixes BUKKIT-429

Adds feature requested in BUKKIT-429. https://bukkit.atlassian.net/browse/BUKKIT-429
CraftBukkit PR: Bukkit/CraftBukkit#944

This change adds a QuitReason to the PlayerQuitEvent and PlayerKickEvent as an enum. When the event is called, CraftBukkit passes the reason for the disconnect to the events - and it'll fallback to QuitReason.UNKNOWN if the reason is not known.

Plugins can then access the reason the player quit through the event.getQuitReason() method. A fallback constructor remains in place, just in case another plugin is calling the event, this defaults to "QuitReason.UNKNOWN" or "QuitReason.KICKED" every time, dependant on the event called.

A small test plugin is available for this change, source code can be found at dualspiral/quittest@58af03d99ce28f75b83bb0bc8e5e690bd57c8e91

The motivation for this change arises from developing a plugin to customize quit messages dependent on the reason a player quit. Currently, the only method that I've seen that has done this is through scraping the console, and sometimes, it does not catch the disconnect reason. Embedding this in Bukkit and CraftBukkit will solve this issue, should it be allowed.

(This description has been altered (PlayerQuitEvent -> QuitEvent) to reflect the state of the PR)

### Status
 - [ ] Waiting for author (@dualspiral)
 - [ ] Waiting for PRH (@riking)
 - [x] Waiting for core