Use charge_incl_tax instead of basket_charge_incl_tax(). This is
clearer.
Backwards compatible versions of the old methods are kept for now.
Related to #805
This solves an issue when there is a shipping discount, but the shipping
method is not wrapped in an OfferDiscount instance (causing an
AttributeError on get_discount). The fix adds support for discounts on
the parent object so that we're no longer in violation of the Liskov
subsitution principle (kind of).
shipping/models:ShippingMethod was missing the is_discounted attribute that
exists in the de-facto superclass in shipping/base:ShippingMethod.
Also added a few comments to clarify how they relate to each other, and
tests to check if is_discounted is present on various instances of
ShippingMethods.
This required:
* Adding a new benefit type.
* Reworking the way shipping methods are looked up by code to ensure
they are 'primed' correctly. Ie, they pick up the discount wrapper.
* Reworking the shipping method repository to use two 'prime_' methods
to post-process the method instances.