Retrieve, transform & store _NET_WM_ICON

Transforming the image to ARGB (32bit) pixmap is necessary for OpenGL.
Retrieve, transform & store icon from WM_HINTS

Although this looks easy, guess why I screamed bloody murder while
implementing this.
Hint: Always use {put,get}pixel with xcb_image_t!
Retrieve & store textual window properties: {NET_,}WM_NAME, class & instance name
Free name_window_pixmap in d'tor
Property accessors for WM_NAMEs, ICONs, etc.
Update stored properties on property notify events
Set every thumbnail to not highlight in c'tor; less expensive
New function: with_texture(...)

Takes a std::function object (e.g. lambda, 2nd parameter) and sets up
the proper context for texture unit <tid> (1st parameter). Then executes
the function and passes the id of the used texture to it. Finally it
cleans up the environment again.
Set up xcb_ewmh_connection_t in ewmh object

Expose the handle through x_connection
Bind additional gl functions
Rewrite GL initialization code

* Use with_texture to initialize per-shader textures
* Enable blending once instead of calling it on every update()
* Some glTexEnvf calls are just not necessary
* 32 bit pixmaps need GLX_TEXTURE_FORMAT_RGBA_EXT to work properly
Factor out shader loading to easily load more than one shader

+ Improve error messages (include shader name)
+ Not necessary to call glUseProgram here
Comment about order of values for glClearColor
Rewrite update(...) to make use of with_texture()
Load "normal" shader which merely copies pixels
Rewrite highlight() function using with_texture()
Rewrite damage handling (handle()) using with_texture()
Draw icon & title pixmaps
Construct a simple title pixmap for drawing
Incorporate all textures into one picture