Add Timespec comment and assert about negative nsec

I added the comment about negative `nsec` that @catamorphism asked for in pull request #4519.

I also added an `nsec` range assert to `Timespec::new()`. If a user really wants a `Timespec` with an out-of-range `nsec`, they can allocate the `Timespec` directly without calling `new()`.