Fixed duration initialization from seconds for negative values

DurationBase<T>::fromSec() always sets nsec <= 0 for negative arguments while normalizeSecNSecSigned() used in the secs and nsecs contructor did the opposite, asserting nsec >= 0.
This results in wrong comparisons between Duration instances constructed differently.

The tests have been updated to cover negative durations.