Only allow one promo

This is a fix for #4675
Please compare to #4775 and discuss the best implementation

Also restores the coupon error messages that provide additional information to the user why a coupon was declined.

Note: haven't run the complete specs yet