Modified qdel() to accept any datum, among other things.

Sorry for the non-specific PR.  If anything needs to be extracted into a separate PR, let me know.

* Modified `qdel()` to accept any datum.
* The garbage controller no longer bothers nulling out every variable on destroyed objects.
* An object can opt to not be collected by returning true from `Destroy()`.  Useful for pooled objects or other edge cases.
* Fixed boxes not being collected, along with a couple other things.
* Turfs will not be monitored for collection.  May modify how this is handled in a later PR.
* `generate_ion_law()` is no longer a `/datum` proc, and I am an admin in the repo.  Deal with it. :sunglasses: