Parameterise the product component

Adds all the necessary new parameters to the Product component,
changing out the hard-coded versions in the view at the same time.

A lot of these are reused on the Products (plural) component, so
this changes that to extend the singular Product component instead,
thus inheriting many of the parameters.