Method for creating shader program outside render time so we can create ...

...the program before creating a VAO as the attributes need setting before we can call glVertexAttribPointer etc.  Probably needs implementing a bit better than this.