Add ItemsStack interface, without any Inventory

Because of the debate with inventory formats (pr #9), I've moved the `ItemStack`
to a separate PR so that we can get this merged sooner, and continue
with interfaces that depend on this.
Those will be `Inventory` methods and will need to wait for the larger debates to make progress. For now, I've updated this with the proper exception and fixed the setQuantity return.