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.
"`Time#change` can now change `:nsec` (nanoseconds) as a higher-precision alternative to `:usec` (microseconds)."

No need to mention the exception behavior here.