Big scary industrial conveyor refactor
Main goal here is to try and reduce how many loops are inside loops, as this scales poorly with large item containers (every slot from every input container is iterating over every slot on every output container)
Do a single prepass over all of the input items and run them through the conveyor filters, resulting in a single list of items that we can process, then attempt to move them to the output containers
Improved GetTotalItemAmount as this was a major time sink when using filters with min/max amounts. Now iterates over the items directly rather than using GetSlots (which triggers another full loop over the container for every slot)
Added an IEqualityComparer to ItemDefinition that just compares itemid, should speed things up when comparing ItemDefinitions