ENH: orthogonal procrustes solver

This introduces a new feature rather than bug fixing or maintenance, so it's now open for the bike-shedding!

I'm not an immediate user of this feature, so take this with a spoonful of salt: are you sure you really want to have the number of returns to depend on the input? In my experience it often makes it harder to reason about the results and leads to a proliferation of `if compute_scale` clauses at call sites. In this case always returning the `scale` does not seem to cost much, what is the benefit of having a variable number of returns?