Abstract shader class added

Added new interface and specific OpenGL implementation