Shader defines

* Separate shader source processing from shader class.
* Shaders with support for defines
* Depends on misc pull request.