REFACTOR:
+ moved all the file io stuff out of Shader:: and into FileContents:: ... Things should be clearer, more robust, and more re-usable now.