Improving discount error handling

Adds in error messages for specific discount code failures, allows them to be displayed under the discount code input field, and will allow developers who call specific discount code validation checks to pull in errors.

Requested in #1916