Weigh the basket using decimals, avoid float rounding issues
While the backend stores the information as floats, the calculations
don't have to do be affected by this. For example:
0.3 + 0.3 + 0.3 == 0.8999999999
Using decimals improves the calculation, and avoid falling into the
wrong weight band.
Rename and move Scales class, and make it overridable
Making it overridable allows altering the weighing method of the basket,
which I wanted to do in a project. As get_classes doesn't support
importing from top-level products, it had to be moved to a scales
module.
Other class names tend to use singular, so as the imports had to be
changed anyway, Scales was renamed to Scale.
We no longer need to pass the StockInfo instance as the basket has a
reference to the strategy class and can fetch it for itself. This means
we don't have to break backwards compatibility with Oscar < 0.6.