Strings are commonly converted to tokens in engine, to save space and speed up things like comparisons. We wrap this functionality up in the StringToken struct, because we can apply a bunch of compile time optimizations to speed up the conversion.