Remove deferred shader sets.
Remove the first argument of the al_set_shader_* functions
Re-introduce the code that validates the uniform location.
Remove the shader_effective check.

Shaders effectiveness is now guaranteed.
Properly document the al_set_shader_* functions. Also document al_set_shader_bool.
Rename 'elem_size' to 'num_components' in the al_set_shader_*_vector functions.

elem_size was a misnomer. Additionally in most online documentation the number
it stood for referred explicitly to the number of components, rather than
any other word.
Add an example to al_set_shader_int_vector