Customize subsecond digits when encoding DateWithTime

The subsecond fraction digits had been hardcoded to 3. This forced all
timestamps to include the subsecond digits with no way to customize the
value. While the subsecond format is part of the ISO8601 spec, it is not
adhered to by all parsers (notably mobile clients). This adds the
ability to customize the number of digits used, optionally setting them
to 0 in order to eliminate the subsecond fraction entirely:

ActiveSupport::JSON::Encoding.subsecond_fraction_digits = 0
Consolidate JSON encoding tests in one file
Rename subsecond_fraction_digits option to time_precision
Add CHANGELOG entry for #11464
Add support for JSON time_precision to Time and DateTime
Make ActiveSupport::TimeWithZone#xmlschema consistent

Both Time#xmlschema and DateTime#xmlschema can accept nil values for the
fraction_digits parameter. This commit makes this so for TimeWithZone
values as well.