Refactoring Inventory related classes

InventoryManager has now only read-only methods, all the write actions have to be done by sending one of the action events: GiveItemAction, MoveItemAction, RemoveItemAction, SwitchItemAction.

Validation of input can be done on inventories via BeforeItemPutInInventory and BeforeItemRemovedFromInventory, which if consumed - will cancel the operation.