Fix stacking for items after setting empty meta. Fixes BUKKIT-5331

ItemStacks do not stack if one has null for a tag, while the other has an
empty tag. In CraftItemStack, if you set an item to an empty ItemMeta, it
will create an empty tag for the internal ItemStack.

This changes the setItemMeta function to check for empty meta, and then
use null for the tag instead of an empty NBTTagCompound.
Make BlockPistonExtendEvent only fire once and cause BlockPistonEvent.setCancelled(true) to stop the action. Fixes BUKKIT-2288, BUKKIT-3523, and BUKKIT-3529