APC/airlocks/alarms fixes

* Fixes the duplication exploit of APC and air alarm electrionics. 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 no longer hear bolt toggling clicksound.




Request:

Remove this abomination of a switch()
Replace doortype as an integer to doortype storing the typepath of the door
then do new doortype (src.loc) instead of all this switch nonsense.