GL3 fixes

-Directional lights now work a lot more correctly (fixes issues
FroggestSpirit was having). Didn't know directional lights needed
normalMatrix instead of modelView matrix.
-Fixes triangleStrip batching in GL3ModelStruct when using indexes. They
were not winding the triangles correctly, so culling failed.
-glsl_program_link() now correctly gets all attributes and uniforms. So
shaders made at runtime work again.
GL3 light fix

-Changed so that light position is updated even if the light is disabled
(required, because in ProjectMario it's done), so dynamic lights work
again. This should fix it and allow more optimization in the future.

Tested on ProjectMario, 3D lights demo and Project Collidascope.
Better GL3 error reporting

-Program class now has "name" member. It can be set manually (in case
you load shaders at runtime) or it's set automatically to the name of
the shader when loaded trough LGM. This means the errors now not only
show ID of the program, but also the name.

Program[0] - Error while linking
Is now:
Program[shr_my_shader = 0] - Error while linking

-Line number shows correctly now. It ignores the prefix part, so if the
error is "error 0:50", then now it is the 50th line in the user shader
and not in the total shader size (which would be prefix + the custom
shader).
Bugfix: Sound allocation code to re-use existing IDs was referencing index -1
Several bugfixes and enhancements:
(1) Improper sound_channel (index i instead of j) was being stopped.
(2) Checking for NULL sounds was never done.
(3) Using vector.insert() was actually causing the vector to add 2 elements per sound, and allowed improper sound overwriting.
(4) GM doesn't actually re-use sound IDs, which avoids the case where stale sound IDs suddenly become relevant again.
(5) sound_add_from_buffer() was leaking memory (by immediately overwriting the empty SoundResource* that sound_allocate() added).
Bugfix: If sound_add_from*() specifies a custom ID, make sure our auto-generated IDs won't conflict.
Merge pull request #775 from sorlok/audio_fix

Many OpenAL fixes
Merge remote-tracking branch 'upstream/master'

Conflicts:
	ENIGMAsystem/SHELL/Graphics_Systems/OpenGL3/GL3ModelStruct.h
	ENIGMAsystem/SHELL/Graphics_Systems/OpenGL3/OPENGL3Std.cpp