Update Base pricing policy interface

This change achieves two things:
- Pricing policies now are mostly concerned with returning a
  oscar.core.prices.Price instance instead of exposing attributes
  of a price directly
- Prices are now returned dependent on the quantity, which allows for
  implementation of non-linear prices.

Down the rabbit hole we go!
Update pricing policies to new interface

* FixedPrice now required passing in the tax_rate instead of the tax
  total, because the tax total will change depending on quantity.
  Semantically, this now means that not the strategy, but the pricing
  policy is responsible for calculating tax.
* TaxInclusiveFixedPrice has been simplified.
Update strategy mixins concerned with pricing

The NoTax and FixedRateTax have been refactored to show how similar
they are. That also means that the fixes from c3940c3 for zero-price
products are applied in all cases, which wasn't the case!

Both mixins now pass in the tax_rate instead of the tax as per the
updated pricing policy interface.
Harden Price class

This commit has two goals:
* Make it clearer that it's supposed to be treated as a read-only
  instance. Pricing policies are responsible for calculating tax,
  so remove any logic to be able to set tax.
* Complain loudly when accessing incl_tax or tax if tax isn't known.
  This was previously handled by the pricing policies only for children
  of FixedPrice, and only when accessing incl_tax.
Differentiate between no tax and zero tax

There is a distinction between no tax (e.g. in B2B applications) and a
tax of 0% (e.g. tax-exempt products). The latter still allows access to
the incl_tax and tax attributes of the Price instances.

This commit changes the default strategy from no tax to zero tax,
updates the tests accordingly, and clarifies the
documentation for the NoTax mixin.

Note that accessing any of the backwards compatible fields on the
Unavailable pricing policy will now raise the TaxNotKnown exception.