Reduce shader version

Since 120 works (apparently) without issues, give it a spin, since 130
produces errors with Nvidias glsl compiler.
Move OpenGL context related stuff to own independent class

OpenGL class is now x::gl::context. Context is created and destroyed in
c'tor/d'tor (RAII). GL API function pointers are wrapped in x::gl::api.
Defer pixmap update to only when it's necessary (when calling show)
Don't update parent and pixmap for every configure notify event

Just notify observers and give them the possibility to update when it's
really necessary.
Make x_client_name an x_client observer; don't update directly

Only call observers so they can perform an update when necessary
Use references instead of pointers
Load functions need to be within current context
Hooray for =delete!
Remove non-iterator specific code from reset() method
This is not the right place, has to be done in update()
Update rectangles and unset highlight; if it's a new window, the show the thumbnail
Reconfigure the thumbnail window and title when rectangle changes and currently visible, else set flags to do so