Detached parameter data from the program

Closes #208

Please have a good look at it. There is probably a couple of ergonomic improvements we can do.
it is not obvious that `VS` and `FS` are statics. I would use `vs_src` and `fs_src` to be consistent with the method signature.