This is in part to match the convention vector sets, but also to give places to put relevant functions and constants
for instance
local quat = quaternion.create(1,2,3,4)
quaternion.normalize(quat)
quaternion.identity
uuid.create("00000000...")
uuid.generate() -- Maybe add versions?
Of course keeping the __call functionality added to vector would be good, to keep people able to use quaternion(1,2,3,4).