Improve support for cc data encrypted on client (browsers)

Some users might choose to encrypt cc info on client side and not record
anything related to credit card at all on db. See Adyen Client-Side Encryption
for example.

I believe we could move on here and make some other attributes also not required when encrypted data is present. Motivation here is I'm working with this gateway which does not send cc number, verification value instead it send all cc info encrypted in one string. In that case the CreditCard model would hold profile ids only. And I really didn't want to create another model to handle that. CreditCard could support both scenarios imo.

Any thoughts against this? Should merge it soon in case no issues come up.