Redundant glUseProgram optimization
Render 3D labels in a second pass

We should also set depth func to LEQUAL, but that needs more testing
Reset render state tracking when changing a single state
Fix warnings about render states being initialized in the wrong order.
Merge remote-tracking branch 'luomu/program-changes'