Add general compiler class and a c++ compiler
Add basic runnable class which will be used for managing compiled solutions.
Add more flexible way to create compilers.
Change the returned objects by the compile method.