Ellipsoid: single argument dilate() and contract() are fractional

This preserves the ratio of the axes and prevents being contracted to
semiaxis length <= 0