Changed the shader loading routines to not require the attributes/uniforms names. The caching of the attributes/uniforms is now deferred until the attributes/uniforms are queried. Changed the built-in shader variable names to std::string from const char*.