Adds more specific error messages to promotions.

When checking if a promotion is eligible, the rules can specify why they
are ineligible by populating `eligiblity_errors`. The first error is
then displayed to the customer instead of a generic message.
Add better error messages for item total rule.
Clean up promotion rule's eligibility errors.

Extract some duplicate code and make things a little prettier.
Add error messages for single use promo rule.
Add error messages for product promotion rule.
Add error messages for taxon promotion rule.
Fix taxon promo rule javascript and localization.
Add error message for logged in user promo rule.