Promotions updates

- ArticlePromotionRedemptionResponseMaker now calls a check to see if
the user has already redeemed a supplied code
- PromotionRepository - new method to check for user redemption of
supplied code
- New API messaging
- New test to check invalid user access key supply