separating 'texture unit' from the concept of a 'texture' to more closely follow OpenGL (we need this before tackling FBOs, which use textures separate from texture units)