Allow currency of a coupon to be null

stefan noticed coupons have a null currency if they are percentage
coupons.

This also updates all binary_to_atom/2 in json decoded results to use
check_to_atom/1 in case the value was null at the beginning.