LIGHTING_DEMO: Create LightingDemo project files
COMMON: Actually return error codes instead of success codes

S_FAILED is interpretted as a success but with an odd result. I wasn't able
to find a general HRESULT code for file access failure, so I just return -1;
PROJECT: Change the OutDir to use seperate folders for each project and build type
CRATE_DEMO: Capitalize cbuffer name
LIGHTING_DEMO: Rough code copy from CrateDemo
PROJECT: Update VS version
COMMON: Create structures for representing lights
COMMON: Create a class for creating basic geometry

The only part of it that is implemented is CreateGrid. The others are just stubs
LIGHTING_DEMO: Create a class for modeling wave dynamics
COMMON: Create a framework for handling models
LIGHTING_DEMO: Create a new filter for simulation logic

And move GameStateManager there
COMMON/LIGHTING_DEMO: Allow GameStateManager to keep pointers to the graphics device and context

This may get hairy later down the line when we start using defferred contexts, but in the meantime, it is
convienient to have in order to do vertex/index buffer tasks
COMMON: Actually support fullscreen
COMMON: Create helper functions for creating random floats
LIGHTING_DEMO: Implement a wave simulation
LIGHTING_DEMO: Move hard-coded update period to a const variable

Then it can be easily referenced from other places
LIGHTING_DEMO: Move all geometry handling to GameStateManager and the ModelManager
LIGHTING_DEMO: Initialize GameStateManager inside GraphicsManager so the device and context can be passed
LIGHTING_DEMO: Render in wireframe until lighting is fully implemented
LIGHTING_DEMO: Create helper method for mapping the CPU WorldViewProj to the GPU