Add Merchant Trade API - Adds BUKKIT-5663
Don't suggest modifying an ImmutableList. Also add new lines at end of file.
Add immutability to all accessor methods for TradeOffer and ItemStacks in events and TradeOffer.
Add comma to TradeType enum
Refactor TradeOffer to be immutable.
clean up TradeOffer#hashCode()
Clean up extra TradeOffer methods
Remove setters for the TradeOffers being removed/added in the events.
Remove TradeType as it is an unecessary source for confusion.
Simplify initial feature set to use InventoryOpenEvent to handle offers being generated and sent to the player. Remove MerchantTradeEvent as it is no longer needed.
Remove Merchant#setTradingPlayer. TODO implement it through Player#openTrade
Remove unecessary Creature extension in the Merchant interface.
Refactor TradeOffer related methods from Merchant to MerchantInventory.
Remove unecessary MerchantRemoveOfferEvent as it is no longer called in NMS.
Allow for custom trade window naming for openTrade(TradeOffer[], String)
Reword javadocs for HumanEntity#openTrade.
Remove explicit throws.
Remove unecessary method from MerchantEvent. Remove setters from TradeOffer that can be confusing mutability.
Remove now unecessary List<TradeOffer> from MerchantAddOfferEvent, can use merchant.getInventory().getOffers().
Use Collection<TradeOffer> instead of TradeOffer[] in openTrade()