Evaluate coupon codes ignoring case

Current implementation forces case which causes confusion for users
who see their entered coupon code change after input. This strategy
allows user input to be maintained, but normalizes the code before
evaulation using a single, shared method.

Fixes #3365
[promo] Remove a whole bunch o' stuff from 'should allow an admin to create an automatic promotion with free shipping (no code)' that simply didn't need to be there