Add support for :nsec option to Time#change

This is a follow-up of https://github.com/rails/rails/pull/16765 and is based on that branch.

Closes #16392.
I'm not sure about summing the components. It doesn't fit the expectation of the `#change` API, which sets "components" of the time. These are the same component - the fractional seconds - with different units. If you provide both, it should be an `ArgumentError`.