Added uniform subroutines
Put GLSLVariable in its own file.