Use Braintree's card type detection

The current card type detection code attempts to use Braintree's masked credit card number to detect card type, but it's always 16 digits for some ungodly reason. Because of this, American Express cards aren't properly detected. Since Braintree returns the card type, I just built a mapping from their type to ActiveMerchant's and use that instead of the ActiveMerchant regexes.

I also cherrypicked 2 fixes for the specs from master.

Fixes #99

Should also probably be merged into 1-3-stable but I haven't tested if it merges cleanly.