Working on CLProgram (WIP)

* Adding main program generation functionality
Add first fully dynamically working version of CLProgram

* Adds support for dynamically generating main kernel executing JS
program
Clean up CLProgram code

Refactoring the code.