[B+C] New banning API. Fixes BUKKIT-4285, adds BUKKIT-3535.

### The issue: ###
Bukkit lacks a complete API for the Vanilla bans system. This request is an implementation of this feature. 

### Justification: ###
Bukkit does not perform edits to the banned-players.txt correctly. Certain values are not filled in, and there is currently no API that supports expiry dates. Another much required feature is ban reasons, which have been part of Vanilla for some time. As a result of accepting this PR, developers will gain access to a new interface (org.bukkit.BanEntry) which is visible from anything that extends OfflinePlayer.

### Breakdown: ###
**In Bukkit**

 - There are now two new method declarations which allows the getting and setting of a player's BanEntry
 - The default BanCommand has also been modified to reflect these changes
 - A BanEntry interface has been created under the org.bukkit package, with methods relating to these. 
 - The new interface is fully documented as per requirements

**In CraftBukkit**

 - BanEntry gets implemented as CraftBanEntry, which can be found at org.bukkit.craftbukkit
 - nms.BanEntry has been added as a separate commit, with the required "// CraftBukkit" comments
 - The nms class creates a CraftBanEntry instance in its main constructor, which can be accessed later
 - A kick-ban will now display the ban reason
 - On the initial ban, the kick message will display who banned the player if they are another player
   - Initial ban-kick example: *Banned by admin "RROD".\nReason: Trolling; appeal at forums.bukkit.org* *
   - Rejoin ban-kick example: *You are banned from this server!\nReason: Trolling; appeal at forums.bukkit.org* *

###### **(Where "\n" is a new line)* ######

### Testing and Results: ###
After attaching debug messages and testing the code with a plugin, it currently runs without issues and updates the banned-players.txt file correctly. 

 - [Kick-ban message](http://puu.sh/3Eaau.png)
 - [Rejoin if banned message, as per Vanilla defaults](http://puu.sh/3EagX.png)
 - [banned-players.txt, right after the ban](http://puu.sh/3Eaoa.png)
 - [After it has expired, the player is able to login again](http://puu.sh/3Ear4.jpg)
 - [Or when the player is unbanned using the test, this is the console results](http://puu.sh/3Eav7.png)

**Test plugin:** [Source code(zip)](https://dl.dropboxusercontent.com/u/97488376/plugins/BanTestPlugin.zip) | [Test download(jar)](https://dl.dropboxusercontent.com/u/97488376/plugins/BanTestPlugin.jar) | [Combined Mirror(zip)](http://ignitionserver.co.uk/BanTest_Mirror.zip)

### Other requirements: ###
 - [Request's Leaky ticket](https://bukkit.atlassian.net/browse/BUKKIT-4564)
 - [BUKKIT-4285](https://bukkit.atlassian.net/browse/BUKKIT-4285)
 - [BUKKIT-3535](https://bukkit.atlassian.net/browse/BUKKIT-3535)

Pull Requests: 

 - [CraftBukkit](https://github.com/Bukkit/CraftBukkit/pull/1201)
 - [Bukkit](https://github.com/Bukkit/Bukkit/pull/903)