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.

While this should be a no-op for most library consumers, @bslobodin it would be great to get a review before I merge.