Compacted shader parsing a bit, added support for defines on shaders

The shader parsing now also supports directly loading from a file again,
using a more flexible structure.