Factorize gui application

Now DMLEngine management is implemented for every platforms only once.
Some other pieces of code are also shared with GuiApplicationBase and WindowBase classes.

This simplify the initialization of the application and avoid copy/past issues.

Maybe some work on OpenGLContext management will be done too in futur.