Further reduce query count when listing products

- browse.html used to check products.count to decide whether do display
  any products. The most common case of products.count returning >0
  would mean an additional query to then fetch the products.
- Product reviews were part of the product base query set. As the
  product rating has been denormalised onto AbstractProduct, that's
  unnecessary.
Merge pull request #688 from soloweb/f/rating_calculation

Add overridable function to calculate product rating
Improve UX for deleted products

When a user ordered a product and it was deleted afterwards, there were
two problems with her order history view.
It wasn't working because the 'Add review' button relied on
line.product.slug, which threw a NoReverseMatch error.
The 'Reorder' button threw an error message '%title is no longer
available for purchase'. That was changed to '%title is no longer
available' to clarify.
Additionally, both the review and reorder buttons are now only displayed
when the product is still in our database - saving the user from a
disappointing click.
Fix has stock record (when fetch related)
Merge branch 'f/fix_has_stockrecord'