shape: pass the model matrix to draw

Rather than two separate calls, just draw with a model matrix.
shaderprogram: cache using shader programs

If it's already set, save a state change.
shaderprogram: cache VAO changes as well
screen: remove unneeded function

It's the same as the base class' version of it.