Many changes

 - Use Xlib instead of XCB for mesa compatibility
 - Event dispatch done through virtual functions
 - Add ScopeGuard
 - Interface automatically scaled according to DPI
 - Use C++14 generic lambdas
 - Add forwarding headers