Adding several new coupon types

This pull request adds several coupon types, and clarifies the CouponInterface interface.
Could you provide an example for this new parameter please ?