Closes#73902
> Since strings are ref counted, and a `\ref` creates a string, then in
cases where a `\ref` is only intended to go to an html window showed to
a player or admin, storing it would extend how long the string for the
`\ref` exists in the string tree, which is likely bloating the string
tree and making it have to force a rebalance more often.
>
> 515's next version has a pretty decent speedup on `\ref`/`ref()`.
Turned into an experiment flag for a few reasons:
1. I like the idea of when testing 515, only testing 515, and not our
changes that benefit from 515
2. Lets me profile the differences a lot easier
3. Makes it clearer what needs to be removed, since I have locked
`cached_ref` behind *not* having the flag.
Also adds a compile error if these flags live past 515.
## About The Pull Request
Adds `EXPERIMENT_515_QDEL_HARD_REFERENCE`, which will queue to the GC
subsystem using hard references rather than `\ref`. This is only
possible in 515 because of the new `refcount` proc. `\ref` is very very
slow and has some nasty knock on effects, so removing its usages where
possible is good.
This is an explicit opt in define because I want to give us the ability
to test 515 on live while only testing 515 itself, not our experimental
changes. We have a few more of these we want to do so I made a separate
file for them. They're auto-defined in unit tests so we see them with
the alternate test runner. In a perfect world we'd test both on and off,
but eh.
Closes https://github.com/tgstation/dev-cycles-initiative/issues/10