COMMON: Create hlsl helper functions for squaring a value
COMMON: Make TextureManager thread safe
COMMON: Make ModelManager thread safe
HALFLING/PBR_DEMO: Add fastformat to the projects
COMMON/PBR_DEMO: Convert stringstream usage to fastformat
COMMON: Create a function to create a new, un-named model

A user *can* just manually create a new model. But by doing it through the
manager, the manager takes on the responsibility of deleting the model at the
end of life.
COMMON: Update the light structures to the new model
COMMON: Create functions for accumulation PBR lighting

And comment out the Blinn-Phong lighting. Until I can go back and
fix the code to use the new surface / material system
PBR_DEMO: Update the GBuffer structure
PBR_DEMO: Convert to PBR shading and the new GBuffer schema
COMMON: Create a class hierarchy for handling Model loading

And move ParseSamplerTypeFromString to this file. Since it pertains only to model
loading, not to models themselves.
PBR_DEMO: Convert Model loading to the ModelToLoad classes

I'm really happy with how clean this is compared to the old solution
PBR_DEMO: Update light loading to the new light structure
PBR_DEMO: Update the material shader structure
COMMON: Don't set shader resources if there aren't any
DOCUMENTATION: Update the scene schema and example to the new structure

Materials are now stored in their own node. Models reference them by name. This also
updates the lights to their new structure
PBR_DEMO: Move the materials to their own node