Glprogram api fixes

`GLProgram` API was using `char*`, incorrect names, and had missing functionality.
This patch fixes all that.