How to Twist a Procedural Material?
While @DuateFarrajotaRamos's answer will seem to work for small angles of rotation, it only approximates rotation and will not achieve 360 degree rotation mentioned in the question. Instead, you can apply a rotation matrix to the actual vectors concerned.

A solution is mentioned as part of this answer https://blender.stackexchange.com/a/77638/29586 - where the X/Z coordinates are rotated based on the Y coordinate using the following nodes :



This works by splitting the Vector into separate X,Y,Z coordinates and applying a rotation using matrix multiplication as :

X = x.cos(angle) + z.sin(angle)
Z = -x.sin(angle) + z.cos(angle)


Varying the Twistiness input will vary the rotation. The Twistiness is measured in Radians rather than degrees so 2*pi radians is a full rotation (360 degrees) - just type '2*pi' into the value node and Blender will automatically calculate.

Note also the Subtract color mix node at the start. This is set to mid-grey (0.5,0.5,0.5) to convert the Generated coordinates ranging from 0.0 to 1.0 into the range -0.5 to 0.5 so that the origin - and centre of rotation - is in the centre of the mesh.

For clarity, here's the complete node setup :



Note that I've removed the 'green' element from the first Subtract MixRGB node. This is to leave the origin of the Y channel at the edge of the mesh so that one end is not affected by the twist (otherwise it twists from the middle). The Subtract and Divide nodes at the end (after the Noise texture) are there simply to increase the contrast of the Noise texture and isn't related to the twisting.

And here's the result :



Blend file attached