Ported most code to use libxcb

Try to use libxcb instead of libX11 most everywhere. The API is cleaner
and doesnt pollute your namespace with all kinds of unqualified
macros and types. libX11 is still needed in some places for the use of
glX. Any libX11 types needed in a header are stored as void * and casted
in the implementation file to avoid including the X11 headers in a place
that would pollute the entire project.

 - libGL is now linked again for non-extension glX functions