Shader.h abstraction

I was pretty sure that C++ allowed you to include .cpp files with ease,
but apparently not...