Expands unit test coverage of TClass and adds a handful more class constants to TClass for ::TYPE_* so we're not typing hard-coded strings all over the place which will NOT generate any sort of compile error, only a runtime error (whereas a mis-typed constant name will generate a compile error)