APC/airlocks/alarms fixes

* Fixes the duplication exploit of APC and air alarm electronics. Fixes #4989 .
* Fixes success message spam: when crowbaring electronics or other procedures in APC/Alarms/airlock/door_assembly, click spamming the src X times will no longer give X 'success' messages. (it also fixes a runtime error due to clickspamming when cutting wires of an APC terminal)
* Trying to install two electronics at the same time in a door assembly no longer deletes one of the two.
* Replaces "sleep()" with "do_after()" for fire alarm electronics removal procedure so you can no longer leave during the waiting period.
* Span class changes: replacing "danger" by "warning" in those procedures when there's no danger involved.
* Procedures consistency fix: all these procedures with a duration now have a visible 'initial' message for third parties w/ "warning" span class (3rd parties need to be alerted before the action is over, not after). For the user, the initial 'trying' msg is standardised to no span class, and success msg uses 'notice'. (although there's a few exceptions)
* Adding a couple 'self_message' to some visible_message() proc.
* replacing "for()+show_message()" by visible_message/audible_message() in a few instances.
* Deaf people can no longer hear bolt toggling clicksound.
* Removes the horrible "switch(doortype)" code by making doortype var the typepath of the door assembly.
* Deconstructing freezer airlock now gives a freezer door assembly (instead of nothing).