Add a Barycentre function for DegreesOfFreedom and use it to simplify the transforms.

This can stay as is for now, `Matrix` doesn't have enough structure to do anything saner.
Eventually when Matrix is turned into rotation, we can give `DegreesOfFreedom` a full affine space structure (either by using affine "absolute" velocities, which would clarify some things, or by having a forgetful functor `Velocity<F> --> Point<Velocity, F>`), and we can return an affine map (and stop talking about bases).