Immediately convert date fields to integers

While this was being done before validation previously, if an
unvalidated card was passed to a gateway it could end up having to deal
with Strings, which would entail type conversion sprinkled all over the
place.

This ensures that month, year, start_month, and start_year are all
converted when set, so that we can always assume those fields are either
an Integer or nil.

See #1214 for the motivation for this change.

Closes #1217.