ScoreDefinition.toLevelNumbers() is ultimately broken if the supplied Number type isn't different from the original (for example BigDecimals will loose a sense of scale). This isn't compatible with doing the calculations in doubles.

So either we do them in doubles and don't convert back to score (as currently implemented, which is a good idea). Or we detect the type and do the calculation in the original type, so we can convert them back to score.