Fixed consequences of context loss

-
When OpenGL context is lost (on android) new ShaderProgram object is
allocated, usually getting the same OpenGL objects as previous one. Then
it is assigned to std::unique_ptr resulting in deletion of old object
and invocation of its destructor. Thus, destructor calls glDelete* on
the objects it no longer owns, garbaging new ShaderProgram.

- Override specifiers added for class Template.