Doors and stacks

* Adjusts the door repair process to use a welding tool.
* Reorganizes stack code a bit, adds procs for transferring material between stacks and splitting off part of a stack into a new stack.
* Modifies stack/use() to delete empty stacks only after the current context yields. This avoids the need for some awkward constructions, as the stack instance will remain until the next sleep(), spawn(), or whatever user input called the proc is done.

Also planned:
* Replace the door damage icon states with spark effect system objects. I guess this is less necessary now that many of the icon state bugs resulting from that have been dealt with, but I think using an effect system would look nicer than the current MS paint spray/sparkler candle animation.
* Prevent doors that cannot be fixed from being broken
ceil(x) is equivalent to (-round(-x))