Bugfix: People unable to hear while in certain locations. (And some debug verbs)

...hopefully
Merge pull request #4463 from Ccomp5950/hopefully

Bugfix:  People unable to hear while in certain locations.  (And some debug verbs)
Chemsmoke rewrite

- Complete rewrite of the chemsmoke spawning code (everything that happens after the reaction to create the smoke).
- Moved it into it's own file since it's a little longer than the old one code-wise.
- Tweaked the smoke sprites; gave chemsmoke directions for more randomization, and tweaked the timing of their animations so they are smooth now.

Most of the code is documented, so you should be able to follow what's going on just reading through it. In short though:
- Chemsmoke now affects a circular area with a variable range depending on the total amount of chemsmoke created (no more 1-of-each-ingredient smoke grenades - sorry).
- The carried reagent volume in the cloud balances itself according to how big the affected area is (larger area, less carried reagent per turf).
- The carried reagent has more volume the closer you are to the centre of the cloud.
- The visual smoke effect scales with how big the affected area is.
Reagent reaction_mob/turf tweaks

- Adds an if() check to reaction_mob for catching a very rare runtime related to mobs inhaling smoke reagents from just deleted smoke.
- Carbons reaction_turf proc now modifies a single dirt overlay layer, instead of just adding more decal objects to the turf.
- Added some checks to the radium and uranium reaction_turf proc so it doesn't stack multiple greenglow decals.
- Performed colon removal surgery on thermites reaction_turf proc, also tweaked it's overlay operation to correctly overlay a chemical puddle effect, instead of a melted wall effect.
- Removed space_cleaners overlays.Cut() code, since it was removing decals from turfs.
Runtime fix

- Fixed a runtime caused by effects bumping disposal chutes.
Added Z-level support.
Added Z-level support for ZAS, disabled by default to save CPU.
- Use #define ZLEVELS or uncomment it in _docs.dm to turn it on.
Fixed a special case with simulated turfs being replaced by space.
Actually any unsimulated turf, but mostly space.
Fixed some zone.remove() bugs:
Turf should be set back to no gas overlays.
Debug mode checks if zone actually contains turf
(might be useful in turf replacement.)
Fixed some weird bugs concerning space and the creation thereof.
Added documentation, split ConnectionManager.dm, removed some unused procs.
Added a proc to find the other zone in an edge for future procs.
Fixed the stupid .int again.
Fixed some debug verbs, removed ZASDBG define.
baystation12.int is the worst thing to happen to version control
Bugfix:  get_mobs_in_view won't allow AIeyes to hear chat.

Also:  Added a client check to saycode for now that stops runtimes when you have a dead body with no client and removed colons from it.
herp derp.
Fix for #4445.
Fix for #4458.
Typo fix.
Smallfix.
Smallfix.
Tiny fix.