gfx: added BufferBinding and interface for renderer; tidy.

gfx/types:
	added BufferBinding and BufferBindingID prototypes;
	added IndexDataType, IndexBinding, and VertexBinding.

gfx/renderer:
	moved _generators below _impl;
	moved ctor to .cpp;
	added create_buffer_binding() and destroy_buffer_binding().
gfx/renderer/opengl: tidy.
gfx/renderer/opengl: added BufferBinding interface implementation.
gfx/renderer: added shader interface.

gfx: added ShaderDef and ShaderStage.
gfx/shader_def: new interface.

gfx/renderer: added create_shader() and destroy_shader().
gfx/renderer/opengl: added Shader interface implementation.
gfx/renderer/types: tidy.
tool_build/interface: output tidy.
resource: added RES_TYPE_SHADER_PRELUDE and RES_TYPE_SHADER.
serialization/gfx: new support group; added gfx::ShaderDef support.
resource: added RES_NAME_SHADER_CONFIG.
tool_build/resource_compiler: added shader_prelude and shader compilers.
resource/resource_handler: added shader_prelude and shader handlers.

gfx/renderer: added _shader_stage to reduce allocation cost for shader handler.
app/app: register shader resource handlers during init.
gfx/renderer: replaced VertexBuffer and IndexBuffer with generalized Buffer.¹

gfx/renderer: added map_buffer().

1: This won't come back to haunt me, right??
gfx: changed TOGO_GFX_NUM_BUFFER_BINDINGS to 2048.
resource/resource_handler: added resource::load_shader().¹

1: Not sure about this interface yet, but something like it will
exist. Also not sure about the namespace it's in.
gfx/renderer: URC.¹

1: Whoopsie daisy.
gfx: renamed VertexAttribType to Primitive and IndexDataType to IntegerPrimitive.

gfx: made Primitive ordered with IntegerPrimitive so that it is a subset.
gfx/renderer/opengl: tidy.