Split shader source updating and compilation (fixes #87)