Introduce GLStateProxy, solving the problem of only the current shader getting notified of state changes.