Fix isStackValidForSlot being ignored

- Added SlotBetterStorage
- Removed SlotProtected
- Updated ContainerBetterStorage, ContainerKeyring, SlotKey
Override mergeItemStack in ContainerBetterStorage

Now respects Slot.isItemValid and IInventory.isStackValidForSlot.
Add and implement IContainerItem
Allow overwriting title in InventoryWrapper
Use isStackValidForSlot, remove now unneeded code

Got rid of SlotKey, also renamed some variables.
Fix cardboard box inventory, use GUI on client