Various Quaternion changes

Lately I saw quite a few people do something like: `angle = quaternion.getAxisAngle(Vector3.Y);`. This will modify Vector3.Y, which is probably undesired. Understandable mistake, given the lack of javadocs (see #1488). Since the goal of the user was probably to get the angle *around* the axis, I took the extra effort to implement those methods as well. As well as fetching euler angles and added some static methods which might help to remove the temp usage. Also added some javadocs along the way.

Note that I did test the methods and they seem to function correctly (within the range mathematical expected). But especially the euler angles were a bit confusing (its all a matter of order). Therefor I guess it doesn't harm if someone can double check.