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.

This also reduces product page to two columns and makes it sane again.

:warning: Depends on #178 as prefetch_related does not work with our `SubTyped`.