Move off of <base/safe_global>

Statics inside functions are well-defined in terms of initalization guarantees with C++11. Use those instead.

Also, rework our NO_DEFAULT_CASE macro so that in debug mode compilers will still emit warnings if we don't cover all cases, and in release mode it will inject an unreachable exception which also logs to the server log it was reached.
These are just going to copy what's given to them, so I'd rather have RVO default construction rather than RVO copy construction of the unknown state. Default construction of a TOpt matches the behavior of GetUnknown()