Added OPTGLOBAL to indicate global instance may be eliminate if unreferenced.
Specified INTERFACE for cvar_enum to avoid type info generation for every cvar_enum instantiation.
Fixed va_buf bugs with vsnprintf returning a wrong value. The fix is even more ugly but should work in practice.
Removed from va_buf some autoconversion operators that were causing conflicts.
Removed type param from Enum() API (not its responsibility to handle this).
Renamed str_t to temp_t to better reflect its usage.
Added Name() to get the type name, for convenience.
Added a default implementation with macro support.
Changed EnumString<bool>() to show how to use the ENUMSTRING() macro.
Updated unittest to be compatible.