function UniformContainer() {

		this.seq = [];
		this.map = {};

	}
@author tschw

Uniforms of a program.
Those form a tree structure with a special top-level container for the root,
which you get by calling 'new WebGLUniforms( gl, program, renderer )'.


Properties of inner nodes including the top-level container:

.seq - array of nested uniforms
.map - nested uniforms by name


Methods of all nodes except the top-level container:

.setValue( gl, value, [renderer] )

		uploads a uniform value(s)
 	the 'renderer' parameter is needed for sampler uniforms


Static methods of the top-level container (renderer factorizations):

.upload( gl, seq, values, renderer )

		sets uniforms in 'seq' to 'values[id].value'

.seqWithValue( seq, values ) : filteredSeq

		filters 'seq' entries with corresponding entry in values


Methods of the top-level container (renderer factorizations):

.setValue( gl, name, value )

		sets uniform with  name 'name' to 'value'

.set( gl, obj, prop )

		sets uniform from object and property with same name than uniform

.setOptional( gl, obj, prop )

		like .set for an optional property of the object