Adding IInventoryStorage and a default implementation

this is the Addition of IInventoryStorage to the inventory api
the default implementation is a bit tricky yet from tests it seems to function well, i would still recommend going over it to check i have not done anything extremely stupid.