Added more parsing to the shader

My goal is to have the c++ code know about the shader to warn against
any issues as soon as possible and hopfully do some automatic work like
activating texture units, creating a proper vertex buffer, etc.