Shader bool returns cleanup
I was looking into reworking the shader code to use a better string buffer and variadic stuff, but I decided to clean up a bunch of the code first.
This consolidates the shader code to use bools for function returns where it reports an error (I'll probably later even rip most of those out).
But I feel this is a good midway point to avoid major regressions.
I'll add another PR later to the next part of the journey that actually does fix things.