Add new feature of reloading all shaders from ShaderFixes folder.

This allows for live editing of the shader files, and lets you see the results of editing without relaunching.
This is a fairly substantial change, including adding a new global for now that keeps the original d3d11device available.

Some unnecessary refactoring for this change, although worthwhile, was to remove the multiple copies of IUnknown interfaces, and include the .h file where those were used. This was part of the debug process, and seemed worth keeping, not backing out.

There is/was a serious bug with RunFrameActions where it is being called from the wrong object, which made the new global necessary. Fixing that was too much for this change.

Added some documentation and strategy comments around the feature as partial documentation on how it works.

Feature complete and functional. Beep sounds for success or failure.

Also fixed the screensnapshot feature, which was broken for the same reason that the calling object was wrong.