Add Merchant Trade API. Adds BUKKIT-5663

This commit adds the API required to manipulate a merchant's (villager)
trade options. This also includes the API required to offer a trade to a
player and therefore get some kind of response from a player.

Many new events have been added to help compensate for the lack of
merchant-related events currently available.

-------

This still has some formatting work to do before this is fully ready to be implemented. Some additional review from myself is also required.

Thank you @gabizou for your contribution on Bukkit/Bukkit#1077. Hopefully not all is lost and your work may continue here at Glowstone.