Extend offers to work when taxes aren't known

This involves some quite involved changes to the internals of how offers
and organised.  A new boolean field has been added to the offer model to
indicate whether to apply to prices exclusive of tax.  This is used
within the offer methods to determine whether a basket meets a
condition, and how to apply the benefit if it does.

Fixes #925
Fixes #924
Rename basket Line properties for clarity

Previous names were ambiguous as to whether discounts were being
included or excluded.