Rework the clean() method of the add-to-basket form
This fixes a bug with adding customised products to the basket, where
the clean method would get a MultipleObjectsReturned exception as the
lookup wasn't taking options into account.
Also fixed a display issue with required options in basket forms.