Add rating field on AbstractProduct

Represents denormalised average of ProductReview scores.

Comes with a migration to populate the new field, and with a management
command to update all ratings in case one changes the rating algorithm
(e.g. moving from the average to weight-based rating).
Do rating stars display in Python

Used to be done in scary Javascript. Now, there's a template filter
as_stars, which maps ProductReview.score's and Product.rating's to the
appropriate number of stars.

As a bonus, the individual review's score's stars are displayed
correctly again; used to always display 0/5 stars.
Tidy-up and document templates

Some commenting and indenting added.
Correct URL regex for reviews

Had fallen out of sync with the core product URLs as it still used a
hyphen instead of an underscore.
Rework review templates

* Extract out the review snippet into its own partial.
* Bring the review detail inline with the review list template.
Rename review templates

Bring names inline with normal django conventions.
Remove superfluous view

Plus some light tidying of the views module
Move management command to conventional location
Move update_product_rating onto Product model

It seems to belong conceptually there, rather than on the ProductReview
model.
Fix bug in management command for updating ratings
Merge pull request #420

Conflicts:
	oscar/apps/catalogue/abstract_models.py
Correct data migration for updating product ratings
Merge branch 'master' of github.com:tangentlabs/django-oscar