[Components] Refactor a bit the PromotionEligibilityChecker

This PR aims to reduce duplicated checks, yet to fix some strange behavior (checking that promotion can use coupon when it can be not coupon based?).

Related to #1316.