Add banning API and resolve associated command issues. Adds BUKKIT-3535.
Fixes BUKKIT-5371 and BUKKIT-4285

Prior to this commit, ban reasons were not supported by banning commands.
Additionally, the player involved in the ban-ip command (or players, in
some cases) was not removed from the server upon being banned.

The Bukkit API lacked support for modifying various attributes associated
with bans, such as reason and expiration date. This caused various plugins
to use external or other means to store a ban reason, making the built-in
banning system to the server partially useless.

Now the ban commands will accept reasons for the bans as well as kick the
player from the server once banned. This means that if a player is IP
banned, they will be removed from the server (and all players with that
IP as well).

The API provided now supports editing the ban reason, creation date,
expiration date, and source. The ban list has also been created to
provide this information more easily. However, editing the data
requires an implementing plugin to manually save the information with
the provided method in BanEntry or BanList.

The addition of this API has deprecated the use of OfflinePlayer#setBanned()
as it has been replaced by the BanEntry to contain more information about
the ban entry.