Implement InventoryMoveItemEvent. Adds BUKKIT-3765

This makes droppers, hoppers and hopper minecarts fire an
InventoryMoveItemEvent whenever an item is being moved from or to another
inventory.
Identify outside slot independent of inventory type. Fixes BUKKIT-2768
Include ThrownPotion in spawn methods. Adds BUKKIT-2542
Add check for Thorns damage - Fixes BUKKIT-3505
Don't assume all hoppers are blocks. Fixes BUKKIT-3883
Add ability to change player item in hand. Adds BUKKIT-3318