Moved Attribute class out of AbstractShaderProgram enum.

No backward compatibility issues should exist, as the class is in most
(if not all) cases used with unscoped name:

    class MyShader: public AbstractShaderProgram {
        public:
            typedef Attribute<0, Vector3> Position;
        // ...
    };