Enum strings

This sets up an equivalent of `LuaConstants` for use on the C++ side. I wanted it for my object properties work, which uses stringy names for constants. It turns out though that there was a good amount of core code that calls through `LuaConstants` to get convert a constant value to a string for use on the C++ side. Converting these over seems to produce a nice little speedup at start when the factions are created, which is kinda nice.