Integrate changes from Stripe Checkout

This PR fixes some bugs we've found while using jquery.payment in [Stripe Checkout](https://stripe.com/checkout).

Specifically, it addresses problems with:
* extra spaces appearing when typing an AMEX credit card
* incorrect values returned from `$.payment.formatCardNumber`
* incorrect formatting and caret placement on Android devices
* incorrect handling of backspace on expiry fields
* incorrect formatting after autofill

The changes in 273d79a08c82795eb24ec36463055e973abfe43c are a bit risky, so it would be great to get some validation that they work as expected on Android and all other platforms. These changes supersede the work done in #99, which was great, but didn't fix the caret positioning problem on Android Firefox.

This PR is likely to address or supersede the following issues: #46 #56 #60 #75 #77 #94 #96 #97