Severely reduce the number of queries

Stop fetching discounts in each and every price lookup. Cache product
variants between iterations. Select related models where it makes sense.

:warning: Depends on #178 as prefetch_related does not work with our `SubTyped`.
Variants don't have price now
Merge pull request #179 from patrys/feature/reduce-queries

Severely reduce the number of queries