Fixes robot stacks transferability

Cleans up transferring between stacks and makes robot stacks
transferable with regular ones.
Stack reorganization, use() now dels after yield

stack/use() now only deletes an empty stack after the current context
yields, removing the need for some awkward patterns when dealing with
stacks. Also adds procs for transferring and splitting stacks.
Adjusts door repair to use a welding tool
Merge pull request #7534 from mwerezak/doors

Doors and stacks