Merged 2 branches because they relied on each other.
This one contains these changes from main c55:
* Adds a function to check if there is room for a specific item
* Using that, you can now pick up rats if you have a full inventory and a not full rat stack
* Furnace would cook only 1 item if that item used the last available result slot, now it will continue
* Furnace will say it's overloaded
* Furnace won't wait until the next step to start on the next item
- This caused small fuels to cook slower than meant to
- Also caused furnaces to say they were out of fuel after finishing the last fuel item