Can't comment below, but now that we have forgetful functors, the constructor of `OrthogonalMap` should be made private, and `Permutation` and `Rotation` should be friends.
If we ever need a public constructor we'll see what we actually need and implement that.