Chemsmoke rewrite

Ported over from Bay. Complete rewrite of chemsmoke, and a few other fixes. It's been live for a few months, but I don't know how much this has actually been tested on the main server as people don't seem to use chemsmoke much.

- 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 - let me know if you want to change this back).
- 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 center of the cloud.
- The visual smoke effect scales with how big the affected area is.

Other fixes

- Foam reagent inheritance fixed:
The trans_to() proc in Chemistry-Holder.dm was calling handle_reactions() every time it would add and remove reagents with add_reagent() and remove_reagent(). I've added a safety flag to both of these procs (and copy_to()) so that trans_to will not call handle_reactions() until it has added all the reagents to the target container. This allows foam to reliably take on the properties of other leftover reagents.
- 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.