#10: Implements shader program management.
#10: Adds comments and minor matching spec.