Shared library
This MR will split the program into GUI and library part. In the future the library part could be use to create a CLI application.
It consists of:
- include files updates
- directory structure reworked
- some glue to make it compile and run under linux and windows