Authorize.Net CIM: Allow omitting expiration date

When using `update_customer_payment_profile`, the card number and
expiration date may not be available (and can't be retrieved using
`get_customer_payment_profile`). Both card number and expiration
date are required to make the update call. The Authorize.net API
allows sending a masked card number (e.g. "XXXX0027") and a masked
expiration date (e.g. "XXXX"), but `add_credit_card` will fail because
it expects the expiration date to be two integers representing month
and year.

This commit allows the expiration date to be omitted from
the passed in `CreditCard` object. If no expiration date is present,
`expdate` will return "XXXX".