Fix gl uniform arrays

Fix the handling of uniform arrays in the GL interop layer. In GL, arrays of uniforms need to have consecutive locations, i.e. array[x] is at location array[0] + x. The uniform mapping table mechanism in library_gl.js did not take into account that user could do int loc = getUniformLocation("array[0]") and then call glUniform3fv(loc+2, data). In the fix, uniforms are mapped so that arrays will be guaranteed to get consecutive locations.