Hopefully fixed __declspec(selectany) on non-win32 builds

Now there is OS guards protecting the member definition in headers for win32, and
actual source file definitions for non-win32. The header aspect is needed because of
how DLLs handle global variables in separate modules (they are 2 different variables).

Changed how resources are ID'd. TypeID is now replaced by GetTypeName/ID tempalte
specialization that needs to be included in each header you want to be a resource.
See Mesh.h for an example.