added code to duplicate a program object - does not yet include uniform setting