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.
Iin this case a copy is forced because we return by value, so I'd rather empty-initialize a new TOpt<TRelPath>() rather than getting the standard unknown one, then copying it out. There are a couple other places I did this optimization as well.