Add an ABM function which resets heat to 0, ...

...since gates/controllers won't be cooled normally if they are moved (piston, etc...) during the cooling delay. That makes them overheat when it is not wanted.