cmake: Avoid duplicate rules to copy example/data to build dir.

This received warnings from the Ninja build tool, which can be used with
recent versions of CMake.
cmake: Minor clean up of cosmic_protector, skater build scripts.
Assert that al_destroy_bitmap does not destroy the targeted bitmap.
ogl: Fix a bug where bitmap locking may change the target bitmap but
not restore it back to NULL.
Fix examples which destroyed the target bitmap.
test_driver: Fix a bug where we could destroy the target bitmap.
test_driver: Fix typo in error message.
speed: Untarget bitmaps before destroying.
speed: Draw lines from/to centres of pixels.
speed: Avoid reading from uninitialised bitmap.
Split use_shader method into two methods.
Make al_use_shader take one argument, potentially NULL.

This requires that the currently used shader become part of the state
somewhere, so that for al_use_shader(NULL) we know how to unbind the
shader (in theory multiple shader backends could be used with a display
backend).  This change makes the shader part of the display state,
just because it was the first thing that occurred to me.
Remove al_set_shader in favour of al_use_shader only.
Make the used shader specific to the target bitmap.

When you target a bitmap, the effective shader will be the shader that
was installed for the bitmap previously (possibly none).

Don't abort/crash in al_use_shader if trying to use a shader which is
incompatible with the target bitmap.  Return false instead.
Apply GLSL shader variable changes immediately when possible.

An al_use_shader call no longer needs to follow al_set_shader_* calls to
cause the variables to really be set by the GLSL backend, if the shader
is already in effect when the set calls were made.

Apart from being an optimisation[*], per-bitmap shaders pretty much
requires this change to make sense.  Otherwise al_set_target_bitmap()
changes the effective shader, then after you set a shader variable you
need to call al_use_shader anyway to make the settings stick.

[*] Well, it would be an optimisation if the code weren't so silly.
It seems we will drop deferred variable sets anyway so the code can be
simplified then.
Make examples conform to updated shader API.
docs: Update shader documentation for recent API changes.
Avoid redundant setting of al_projview_matrix in al_set_target_bitmap.
Refactor some code to update shader's al_projview_matrix.
Clear display's program_object, effect fields in unuse_shader.

To pass the test suite I had to change the logic of when the OpenGL
matrix was updated when in programmable pipeline mode.  Hopefully it
is not wrong, but the shader API has undergone changes and old
assumptions may not hold (such as not clearing said fields).