collection/fixed_array: added increase_size().
gfx/types: #include tidy.
gfx/renderer: bare bones parameter block support in ShaderDef.

gfx:
	added ParamBlockDef;
	added ShaderSpec to store param block definitions and stages;
	reworked ShaderDef to include param blocks and generalized it
	over the number of shader stages (format version 2);
	;

gfx/renderer:
	take ShaderSpec for create_shader();
	added _fixed_param_blocks;¹
	track number of active draw param blocks.²

gfx/renderer/opengl:
	added bind_param_block() and unbind_param_block();
	setup param blocks in create_shader();
	tidy.

tool_build/resource_compiler/shader_def:
	generalized source reading over stage types;
	prepared for param block name handling.³

1: The interface for fixed param blocks will be somewhat loose.
The fixed param blocks will be freely (un)bindable, whereas the draw
param blocks must match exactly to the shader specification. Fixed
param blocks that are bound but unused will remain bound until
explicitly unbound.

2: This will be used to ensure unused draw param blocks are unbound.
I have to measure whether this will have any significant impact on
performance.

3: This will actually come with the shader compilation reflow.
The compiler will join all of the sources so that the runtime doesn't
have to dynamically allocate preludes and validate param blocks.